Php 我无法使用PDO过程更新数据中的状态行

Php 我无法使用PDO过程更新数据中的状态行,php,mysql,pdo,Php,Mysql,Pdo,我在使用PDO过程更新mysql表中的状态行时遇到了麻烦。表中的状态行定义为0,因此每当我按下确认按钮时,我希望它变为1,但它不能,并且我整晚都在尝试修复它,但我不能 这是我的数据库连接 <?php class Database { private $host = "localhost"; private $db_name = "jerrydb"; private $username = "root"; private $password = "";

我在使用PDO过程更新mysql表中的状态行时遇到了麻烦。表中的状态行定义为0,因此每当我按下确认按钮时,我希望它变为1,但它不能,并且我整晚都在尝试修复它,但我不能

这是我的数据库连接

<?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 } ?>

您实际上使用的是PDO,因此在使用PDO时,无需使用这些
mysqli\u real\u escape\u string
来准备bind,execute语句

<?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
}
?>

我已经查看了sql注入的所有答案,但我想不出答案,如果我的代码能被修改,我会很高兴的。我是网络开发新手。谢谢你用错误的链接结束了另一个问题。这与sql注入无关,只是混合了不同的mysql API,并且没有使用正确的连接变量。这家伙什么时候能学会?我重新打开了这个问题。如果使用pdo,您需要使用bindParam并执行步骤。不建议直接运行查询。您能发布更新的var_dump($query)结果吗,这样您就可以知道生成了什么查询了。谢谢您,先生,我已经通过“不同的mysql API和不使用正确的连接变量”这一技巧解决了这个问题。非常感谢您。我很感激