【发布时间】:2012-11-04 12:25:07
【问题描述】:
可能重复:
Can PHP PDO Statements accept the table name as parameter?
我的班级中有一个函数正在做一些麻烦。这里的功能
function insert($table,$column = array(),$value = array())
{
$array1 = implode(",", $column);
$array2 = implode(",", $value);
try
{
$sql = $this->connect->prepare("INSERT INTO :table (:date1) VALUES (:date2)");
$sql->bindParam(':table',$table, PDO::PARAM_STR);
$sql->bindParam(':data1',$array1, PDO::PARAM_STR);
$sql->bindParam(':data2',$array2, PDO::PARAM_STR);
$sql->execute();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
我调用函数:
-> insert('coupons',array('categorie','name','link','code','id'),array('test11','test','test','test','NULL'));
我得到的错误是:
警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter is not defined in C:\xampp\htdocs\MYFRAMEWORK\lib\database.class.php on line 46
第 46 行是:
$sql->execute();
所以现在我真的不明白问题出在哪里。有什么指点吗?
【问题讨论】:
-
您构建的查询不正确。请参阅this question,其中详细说明了如何完全按照您的要求进行操作。
-
你不能绑定标识符,只能绑定值。表名是一个标识符,您需要将其列入白名单或过滤它。见stackoverflow.com/a/8255054/345031