PDO绑定值数据,而不绑定表和列名。
您误解了绑定的使用。您不能将表和列名称与PDO绑定。您绑定数据以将INTO插入这些列。您需要使用字符串操作构造SQL以包括表名和列。
格式化数据
我已将您的$ column和$ value重命名为$ column_array,$ value_array以清楚说明它们是什么,并假定每个都是简单数组:
$column_array = array('column1', 'column2', ...) etc.$placeholders = array_map(function($col) { return ":$col"; }, $column_array);$bindvalues = array_combine($placeholders , $value_array);$ placeholders现在看起来像这样:
$placeholders = array( ':column1', ':column2', ... );
$ bindvalues现在看起来像这样:
$bindvalues = array( ':column1'=>'value1', ':column2'=>'value2', ... );
建立,准备,执行
$sql = $this->connect->prepare("INSERT INTO $table (" .implode(",", $column_array) .") VALUES (". implode(",", $placeholders) . ")";这将为您准备以下形式的声明:
$sql = INSERT INTO table_name (column1, column2, ...) VALUES (:column1, :column2, ...)
然后,您可以执行准备好的语句并将$ values作为参数传递。
$sql->execute($bindValues);
注意:
- 必须提到的一个警告。 确保已针对SQL注入对原始数据进行了清理。 PDO会为绑定值做好准备,但是,如果要从$ _POST数据构造列,则这很容易受到攻击,需要进行清理。


![PDO bindParam问题[重复] PDO bindParam问题[重复]](http://www.mshxw.com/aiimages/31/421348.png)
