一尘不染

MySQLi绑定参数与IN数组

php

我正在尝试将数组$stmt->bind_param作为IN变量传递给for。我怎样才能做到这一点?

$values = array('a','b','c','d');
$values = '"' . implode('","', $values) . '"';

$stmt->prepare('SELECT value1, value2 FROM table1 WHERE value3 IN (?)');
$stmt->bind_param('s', $values);

我无法让它为我的一生工作。有什么想法吗?上面的代码只是一个示例。


阅读 353

收藏
2020-05-29

共1个答案

一尘不染

在这种情况下,这样做是不合适的。您正在构造实际的SQL(这就是逗号和引号),并将其作为参数传递。它基本上以评估value3 IN ('...')那里...是全部$values

同样,这是关于引号的一个好电话。MySQL使用单引号。

您将需要仅使用字符串连接来构建SQL,或者使用多个参数。

编辑

举个例子:

$values = array('a','b','c','d');
$values = "'" . implode("','", $values) . "'";
$stmt->prepare('SELECT value1, value2 FROM table1 WHERE value3 IN (' . $values . ')');
2020-05-29