当前位置: 首页 > 面试题库 >

MySQLi绑定参数与IN数组

马高谊
2023-03-14
问题内容

我正在尝试将数组$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);

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


问题答案:

在这种情况下,这样做是不合适的。您正在构造实际的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 . ')');


 类似资料:
  • 我不明白为什么我会得到这样的错误:“prepared Statement中的变量数不匹配参数数”。 我的代码如下所示:

  • 问题内容: 请看下面我的代码。我试图将一系列参数绑定到我准备好的语句中。我一直在网上四处逛逛,可以看到我必须使用call_user_func_array但无法正常工作。我得到的错误是:“第一个参数应该是有效的回调,给出了’Array’”我可能是错误的,但是我假设第一个参数可以是一个数组,并且此错误消息可能会引起误解。我认为问题是我的阵列在某种程度上存在错误。谁能看到我在做什么错?谢谢。 问题答案:

  • 问题内容: 我的代码: 始终显示为1的计数,但是当我跳过参数化并仅将变量本身添加到其位置时,我得到了准确的计数。这里发生了什么? 问题答案: 您不能像这样为IN子句绑定参数。$ myArray字符串将仅计为一个值,例如执行以下操作: 即使有三个以逗号分隔的值,数据库也会将它们作为一个字符串值读取。 您需要以惯用的方式手动将IN列表插入查询中。 不幸的是没有其他办法。至少现在(是。

  • 问题内容: 现在,我需要使用以下结构来将多个参数绑定到mysqli查询中: 我使用以下代码计算出问号的数量,并将其插入查询中: 我的问题是,肯定有一种方法可以动态处理查询中尽可能多的输入。硬编码似乎是处理此问题的一种非常糟糕的方法。 我正在使用PHP版本5.4.10 问题答案: 不幸的是,默认情况下,bind_param()不接受数组而不是单独的变量。但是,自PHP 5.6起,将进行重大改进。 要

  • 问题内容: 我有一个功能可以做到这一点: 哪个发送到我的数据库类,它执行以下操作: 问题是这不起作用。 我希望做的是获取列表,并在后面列出它们,以使查询类似于: 但是很明显,我走错了路。 有没有办法使数组…按原样转换为要在查询阶段打印出来的列表? 问题答案: call_user_func_array “使用参数数组调用回调” 应该做的工作 更新 :您还必须更改您的params数组: 如预期的那样,

  • 问题内容: 我最近从mysql切换到mysqli并开始使用准备好的语句。在mysql中我们做 因此,我们将整个表的数组放在一个变量中。 但是在mysqli中 所以基本上这里只有一个变量绑定到变量结果。我们如何获得与从mysql获得的变量(数组)相同的变量? PS-希望我的问题足够清楚。我知道他们的方法不多,但我希望能找到最好的方法。 PSS-我对程序方式比较满意。 问题答案: 最终,这段代码可以正