【发布时间】:2016-12-16 04:46:01
【问题描述】:
我是 PDO 的新手(来自 mysqli),我一直在寻找几个小时,似乎无法弄清楚如何将 WHERE 和 IN 运算符与 PDO 准备好的语句结合起来。
简单的 WHERE(工作正常):
$value1 = 'val1';
$value2 = 'val2';
$stmt = $pdo->prepare('SELECT * FROM mytable WHERE val1 = ? AND val2 = ?');
$stmt->bindParam(1, $value1);
$stmt->bindParam(2, $value2);
$stmt->execute();
IN 语句(工作正常)
$myArr = ['NY', 'PARIS', 'ROME'];
$q = str_repeat('?,', count($myArr) - 1) . '?';
$sql = "SELECT * FROM myTable WHERE cities IN ($q)";
$stmt = $db->prepare($sql);
$stmt->execute($myArr);
合并(不工作):
$value1 = 'val1';
$myArr = ['NY', 'PARIS', 'ROME'];
$q = str_repeat('?,', count($myArr) - 1) . '?';
$sql = "SELECT * FROM myTable WHERE column = ? AND cities IN ($q)";
$stmt = $db->prepare($sql);
$stmt->bindParam(1, $value1);
$stmt->execute($myArr);
提前致谢!
【问题讨论】:
-
什么是
$value1我没有看到它的定义,为什么$myArr在执行中 -
使用
→bindParam或→execute(ARRAY),不能同时使用。 -
column = ?应该是什么? -
$value1仅用于显示目的,在代码前面已定义。 -
@RiggsFolly 我的理解是使用 IN 运算符,
$qvar 将被填充为 ?根据数组的计数,我只需要指定一个 WHERE 和一个 IN
标签: php pdo prepared-statement