2017-02-17 40 views
0

我在使用PDO过程在我的mysql表中更新状态行时遇到了麻烦。状态行在表中定义为0,所以我希望它在每次点击确认按钮时都变为1,但它不能,我一直试图修复它,但是我不能。我无法使用PDO过程在我的数据中更新状态行

这里是

<?php 
class Database 
{ 
    private $host = "localhost"; 
    private $db_name = "jerrydb"; 
    private $username = "root"; 
    private $password = ""; 
    public $conn; 





    public function dbConnection() 
    { 

     $this->conn = null;  
     try 
     { 
      $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password); 
      $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     } 
     catch(PDOException $exception) 
     { 
      echo "Connection error: " . $exception->getMessage(); 
     } 

     return $this->conn; 
    } 
} 

?> 

这里是我的剧本,我想确认消失每当我点击它,并在同一时间的变化状态行1

<?php 


if (isset($_GET['entity']) && isset ($_GET['action']) && isset($_GET['user_id'])){ 

    $entity = mysqli_real_escape_string($db, $_GET['entity']); 
    $action = mysqli_real_escape_string($db, $_GET['action']); 
    $user_id = mysqli_real_escape_string($db, $_GET['user_id']); 



$query = "UPDATE jerrydb set status = '1' WHERE user_id='$user_id'"; 

    $db->query($query); 
} 




$query = "SELECT * FROM jerrydb WHERE status='0' ORDER BY user_id DESC"; 

$jerrydb = $db->query($query); 

?> 

<?php if($row = $jerrydb->fetch_assoc()) { ?> 


        <tr> 
        <td><a href="index.php?entity=go&action=approve&id=<?php echo $row['id'];?>" class="btn btn-success">Confirm</a> </td> 



       </tr> 

        <?php } ?> 
我的数据库连接
+0

我已经看到SQL注入的所有问题的答案,我无法弄清楚,我会很高兴如果我的代码将被修改。我是网络开发新手。谢谢 – Joe

+2

[YCS](http://stackoverflow.com/users/285587/your-common-sense)用错误的链接关闭了另一个问题。这与sql注入没有任何关系,但是混合了不同的mysql apis并且没有使用正确的连接变量。这个人什么时候会学习?我重新提出了这个问题。 –

+0

如果使用pdo,则需要使用bindParam并执行步骤。不建议直接运行查询。你可以发布你的更新的var_dump($ query)的结果,这样你就可以知道生成了什么查询。 –

回答

0

您实际上使用的是PDO,因此您不需要使用这些mysqli_real_escape_string当您使用PDO时最好准备绑定,执行语句。

<?php 
if (isset($_GET['entity']) && isset($_GET['action']) && isset($_GET['user_id'])) { 
    $entity = $_GET['entity']; 
    $action = $_GET['action']; 
    $user_id = $_GET['user_id']; 
    $query = $conn->prepare("UPDATE jerrydb SET status = '1' where user_id = ? "); 
    if ($query->execute([$user_id])) { 
     echo "status updated"; 
    } else { 
     echo "not"; 
    } 
} 
$query = $conn->prepare("SELECT * FROM jerrydb WHERE status='0' ORDER BY user_id DESC"); 
$query->execute(); 
$jerrydb = $query->fetchall(PDO::FETCH_ASSOC); 
if (count($jerrydb) > 0) { // we have results 
    foreach ($jerrydb as $key => $row) { 
    } 
?> 

      <tr> 
        <td><a href="index.php?entity=go&action=approve&id=<?php 
    echo $row['id']; 
?>" class="btn btn-success">Confirm</a> </td> 



       </tr> 

<?php 
} 
?> 

要了解更多关于PDO请访问这个网站,它很好地解释了,让一切轻松简单https://phpdelusions.net/pdo