PDO不会更新到MySQL

时间:2012-06-08 17:02:15

标签: php mysql pdo

我正在尝试使用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) );

1 个答案:

答案 0 :(得分:2)

您不能使用?替换准备好的查询中的表名,或实际上任何对象名(列,数据库等)。参数化仅适用于值。你必须这样做:

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

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