我准备好的查询如下所示:
$sql = "SELECT $t1.id FROM $t1 WHERE $t1.name IN (?)";当我尝试的时候:
$stmt = Sql::$select->prepare($sql);
$string="'aaa','bbb','ccc'";
$stmt->bind_param('s', $string);...it没有返回预期的结果。它将字符串视为一个名称,而不是许多单独的名称。如何解决呢?
函数的其余部分:
$stmt->execute();
$stmt->store_result();
return $stmt;发布于 2012-11-12 18:10:20
试着像这样修改查询
$sql = "SELECT $t1.id FROM $t1 WHERE FIND_IN_SET($t1.name, ?)>0";
$stmt = Sql::$select->prepare($sql);
$string='aaa,bbb,ccc';
$stmt->bind_param('s', $string);这种解决方案是不可靠的。请参阅 FIND_IN_SET(str,strlist)
正确的方法是对in语句中的每个元素使用单独的占位符。
另一个建议是,去掉IN语句,在php中运行一个循环来生成查询并绑定参数。
https://stackoverflow.com/questions/13341180
复制相似问题