|
在PHP中,使用bindParam绑定参数时,无法直接将一个包含多个值的字符串作为参数。解决这个问题的方式是将参数拆分成单个的值,并将其绑定到参数中。
以下是修复后的代码示例:
- $libid = array(0, 20, 19, 18, 3, 2);
- $placeholders = implode(',', array_fill(0, count($libid), '?'));
- $stmt = $conn->prepare("SELECT * FROM tb_soft_lib WHERE id IN ($placeholders)");
- foreach ($libid as &$value) {
- $stmt->bindParam('?', $value);
- }
- $stmt->execute();
- $result = $stmt->get_result();
- if ($result->num_rows > 0) {
- while ($row = $result->fetch_assoc()) {
- $info[] = $row;
- }
- $arr = $info;
- } else {
- $arr = array();
- }
- $stmt->close();
复制代码
在上面的示例中,我们将要查询的id值存储在一个数组$libid中。然后,我们使用implode函数将数组中的值连接成一个字符串,用于构建SQL查询中的占位符。接下来,我们使用bindParam方法逐一将数组中的每个值绑定到占位符中。
最后,我们执行查询并处理结果。如果有结果,我们将每行的数据存储在$info数组中,并将$info赋值给$arr变量。如果没有结果,则将$arr初始化为空数组。 |
|