php - 来自数组或逗号分隔的字符串 : get fields from db in just one query

标签 php mysql

我有多个数值,可以用数组或逗号分隔的字符串表示。对于这些值中的每一个,我想选择相应的数据库行。是否可以在一个查询中执行此操作?

// data examples
$array = array(3, 6, 200); // or more values
$string = '3,6,200' ; // or more values

我可以对每个值执行以下查询,以从表中获取一个字段:

SELECT email FROM table WHERE id='$array_value';

但是我怎样才能在一个查询中得到这个呢?

最佳答案

您应该使用 IN 运算符。如果 $data 是数组或逗号分隔的数字列表(字符串),请执行以下操作:

$in = is_array($data) ? implode(',', $data) : $data;
$query = "SELECT email FROM table WHERE id IN (" . $in . ")";

仅当您确定数组中的元素是安全的时才执行此操作。

如果你必须保证你的数据安全,你可以这样做

$in = is_array($data) ? 
        "'" . implode("','", array_map('mysql_real_escape_string', $data)) . "'" : 
        "'" . mysql_real_escape_string($data) . "'";

或者如果您需要整数值,只需使用:

$in = is_array($data) ? 
        implode(',', array_map('intval', $data)) : 
        (int)$data;

关于php - 来自数组或逗号分隔的字符串 : get fields from db in just one query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434479/

相关文章:

php - 如何使用 PhpSpreadsheet 从表格单元格中检索日期?

mysql - 分组后的随机数据

php - 是否可以使用 Google Docs API 将文本字符串转换为 PDF

php - 从 php 中的值中减去百分比

php - 使用数据映射器模式处理关系

javascript - 如何使用 PHP 和 JQuery AJAX 在 <div> 标签中检索和插入 MySQL 数据?

python - 如何覆盖 peewee 中的 create_table() 以创建额外的历史记录?

mysql - 在Mysql中连接2个销售表

mysql - SQL 或 MYSQL 中的函数是否有任何方法可以汇总列中的所有增量?

php - XEditable 使用 PHP MySQL 通过 Ajax 更新 : issue with updating different columns.