PHP PDO使用IN和WHERE运算符准备语句

时间:2016-08-10 00:48:07

标签: php pdo prepared-statement

我是PDO的新手(来自mysqli),我一直在搜索几个小时,似乎无法弄清楚如何将WHERE和IN运算符与PDO预处理语句结合起来。

简单WHERE(工作正常):

tf.get_default_graph().finalize()

IN声明(工作正常)

$value1 = 'val1';
$value2 = 'val2';
$stmt = $pdo->prepare('SELECT * FROM mytable WHERE val1 = ? AND val2 = ?');
$stmt->bindParam(1, $value1);
$stmt->bindParam(2, $value2);
$stmt->execute();

合并(不合作):

$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);

提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为这不起作用的原因是因为你正在使用两者

$stmt->bindParam(1, $value1); $stmt->execute($myArr);

要使用数组并使其工作,请执行以下操作:

prepare($sql);

execute($myArr);

$myArr中,您应该包含columns = ?应该包含的内容,您可以使用此array_unshift() array_unshift($myArr, 'X'); array_unshift()将其添加到数组的开头}

调用$myArr后,变量[myArr] => Array ( [0] => X [1] => NY [2] => PARIS [3] => ROME ) 的值将如下所示:

prepare($sql);
execute($myArr);

现在您可以正确调用PDO语句:

-webkit-transform: translate3d(0px, 0px, 0px);
-webkit-mask-image: -webkit-radial-gradient(white, black);