我在绑定参数或值时遇到了问题,有人知道哪里出了问题吗?如果我改变了呢?要使其有效,请执行以下操作:
$item = 'area';
$query = dbConnectionPDO::getConnect()->prepare( ' SELECT * FROM ? ' );
$query->bindParam(1, $item, PDO::PARAM_STR);
$query->execute();
while($resultId = $query->fetch(PDO::FETCH_ASSOC)){
////
}这是一个好的解决方案吗?它起作用了!
$select = 'select * from ' . $item . ' left join ' . $TableName . ' ';
$query = dbConnectionPDO::getConnect()->prepare("$select ON :three = :four");
$query->bindValue(':three', $three, PDO::PARAM_STR);
$query->bindValue(':four', $four, PDO::PARAM_STR);
$query->execute();
while($resultId = $query->fetch(PDO::FETCH_ASSOC)){
////
}发布于 2012-11-13 17:49:26
您正在尝试绑定一个表名,而不是一个参数。我不确定你真的能做到。
bindParam通过绑定问号持有者或命名的参数,而不是表名来工作。
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();如果你只是在寻找占位符“替换”,你可以只使用sprintf,但要小心,因为如果你要做任何可疑或愚蠢的事情(比如从外部来源接受表名),它可能会泄漏。
例如:
$theQ = "SELECT * FROM `%s` LEFT JOIN `%s` ON `%s` = `%s`";
$runQ = sprintf($theQ, 'one', 'two', 'three', 'four');发布于 2012-11-13 17:51:24
您需要提供一个有效的SQL语句,其中只对文字进行参数化。即使数据库驱动程序愚蠢到可以接受查询,您最终也会执行如下内容:
SELECT * FROM 'area'..。这显然不是你想要的。
发布于 2012-11-13 17:48:49
不能参数化表名,只能参数化参数。
https://stackoverflow.com/questions/13358483
复制相似问题