0

我正在尝试使用 PDO 更新 MySQL 中字段的值,我尝试过使用不同类型的准备好的语句,但它们都不起作用。这是我的代码:

    $table = $_POST['table'];
    $field = $_POST['field'];
    $value = $_POST['value'];

    try{

       $available = "Available";
       $cero = 0;

       $q = "UPDATE ? SET $available = $cero WHERE ? = ? ";
       $stmt = $connection->getPdo()->prepare($q);  
       $stmt->execute( array ($table,$field,$value) );

       echo true;       

    }catch(PDOException $exception){
      echo $exception;
    }

问题解决了:

   $q = "UPDATE $table SET $available = $cero WHERE $field = ? ";
   $stmt = $connection->getPdo()->prepare($q);  
   $stmt->execute( array ($value) );
4

1 回答 1

2

您不能?在准备好的查询中使用表名或任何对象名(列、数据库等)来替换。参数化仅适用于值。你将不得不做:

$q = "UPDATE $table SET $available = $cero WHERE $field = ? ";
$stmt = $connection->getPdo()->prepare($q);  
$stmt->execute( array ($value) );

您尝试这样做的事实表明您正在从用户输入中获取表名,这是一个非常糟糕的主意,即使您正在转义它。

于 2012-06-08T17:08:43.680 回答