相关疑难解决方法(0)

我可以将数组绑定到IN()条件吗?

我很想知道是否可以使用PDO将值数组绑定到占位符.这里的用例试图传递一个值数组以用于IN()条件.

我希望能够做到这样的事情:

<?php
$ids=array(1,2,3,7,8,9);
$db = new PDO(...);
$stmt = $db->prepare(
    'SELECT *
     FROM table
     WHERE id IN(:an_array)'
);
$stmt->bindParam('an_array',$ids);
$stmt->execute();
?>
Run Code Online (Sandbox Code Playgroud)

并让PDO绑定并引用数组中的所有值.

目前我正在做:

<?php
$ids = array(1,2,3,7,8,9);
$db = new PDO(...);
foreach($ids as &$val)
    $val=$db->quote($val); //iterate through array and quote
$in = implode(',',$ids); //create comma separated list
$stmt = $db->prepare(
    'SELECT *
     FROM table
     WHERE id IN('.$in.')'
);
$stmt->execute();
?>
Run Code Online (Sandbox Code Playgroud)

这当然能完成这项工作,但只是想知道是否有一个内置的解决方案我缺席了?

php arrays pdo prepared-statement where-in

549
推荐指数
17
解决办法
20万
查看次数

使用WHERE子句将数组传递给查询

给定一组id $galleries = array(1,2,5)我想要一个SQL查询,它在WHERE子句中使用数组的值,如:

SELECT *
FROM galleries
WHERE id = /* values of array $galleries... eg. (1 || 2 || 5) */
Run Code Online (Sandbox Code Playgroud)

如何生成此查询字符串以用于MySQL?

php mysql arrays

303
推荐指数
12
解决办法
54万
查看次数

MySQL PHP - SELECT WHERE id = array()?

可能重复:
使用数组的MySQL查询将数组
传递给mysql

我在PHP中有一个数组:

$array = array(1, 4, 5, 7);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我有一个不同值的数组,但我想编写一个MYSQL语句来检查它id是否等于数组中的任何值.例如,如果一行的id值为1,则它将返回该行,对于4,5和7也是如此.由于程序的性质,数组的长度可能会有所不同,因此这就是问题所在.我可以这样做:

SELECT ...
  FROM ...
 WHERE id = '$array'
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?
如果我不清楚,请向我询问更多信息.

html php mysql arrays

37
推荐指数
3
解决办法
17万
查看次数

格式化SQL"IN"子句的PHP数组

我正在尝试在数据库中查询"product_id"包含在产品ID数组中的记录.

数组是多选输入(<select>)的结果,如下所示:

$clients = 
  Array ( 
    [0] => 80000016-1302638679
    [1] => 8000003B-1329924004
  )
Run Code Online (Sandbox Code Playgroud)

我想将该数组传递给SQL语句的"IN"子句,例如:

$sql = "SELECT * FROM sales WHERE product_id IN (".$clients.")";
Run Code Online (Sandbox Code Playgroud)

...但这不起作用(错误:) Message: Array to string conversion.

一些帖子建议使用此函数以适合SQL的方式格式化数组:

function format_array($array){
    return implode(', ', $array);
  }
}
Run Code Online (Sandbox Code Playgroud)

如 ...

$sql = "SELECT * FROM sales WHERE product_id IN (".format_array($clients).")";
Run Code Online (Sandbox Code Playgroud)

这导致了这个查询:

SELECT * FROM sales WHERE product_id IN (80000016-1302638679, 8000003B-132992400)

......而且这个错误:

Unknown column '8000003B' in 'where clause'

我究竟做错了什么?任何帮助是极大的赞赏!如果需要,我可以澄清这个问题:)

php mysql codeigniter

4
推荐指数
2
解决办法
5189
查看次数

标签 统计

php ×4

arrays ×3

mysql ×3

codeigniter ×1

html ×1

pdo ×1

prepared-statement ×1

where-in ×1