php - 如何在 MySQL IN 语句中的内爆数组中的字符串周围添加撇号?

标签 php mysql arrays string implode

我在 PHP 中有以下数组:3D, 玛丹娜, 电影, 情报, 大独裁

我的 SQL 查询如下:

$query = "SELECT * FROM news 
WHERE tagkey IN (3D, 瑪丹娜, 電影, 情報, 大獨裁)";

但是这个查询给出了一个错误:查询失败

我需要添加撇号,但我该如何更改

`3D, 瑪丹娜, 電影, 情報, 大獨裁`  

`'3D', '瑪丹娜', '電影', '情報', '大獨裁'`

?

所以查询应该是这样的:

$query = "select * FROM news WHERE tagkey IN ('3D','瑪丹娜','電影','情報','大獨裁') ";

我当前的 PHP 代码:

$tag_array = array($line["tagkey"]);
$tag_str = implode(" ", array($line["tagkey"]));
echo $tag_str;
$query = "select * FROM news WHERE tagkey IN ($tag_str)";

更新 2012/06/15 **抱歉:现在我改变了我的虚拟主机。这个脚本错误..

这个: 警告:array_map() [function.array-map]: 第一个参数,
'apply_quotes',应该是 NULL 或一个有效的回调

$list = explode(',', $line["tagkey"]);
$list = array_map('apply_quotes', $list);

警告:join() [function.join]:参数错误。在

$query = "select * FROM news 
      WHERE tagkey IN (" . join(',', $list) . ") ";

最佳答案

array_map()允许您对数组的每个元素调用一个函数。

$tag_array = array_map ( function($var) {
  return "'" . mysql_real_escape_string($var) . "'";
}, $tag_array );

但我建议您使用准备好的语句(PDOmysqli 而不是即将弃用的 mysql_ 函数)。

关于php - 如何在 MySQL IN 语句中的内爆数组中的字符串周围添加撇号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10912185/

相关文章:

php - 在 wordpress 上运行调整大小 Logo 脚本

php - mySQL 选择 y 范围内 x 公里/英里内的邮政编码

php - 为什么在确定 PHP 准备语句中 select 查询返回的行数时存储结果集?

python - Numpy 索引数组插入

php - 当名称字段是数组时如何使我的表单粘住

php - 我使用服务器发送事件(和 Javascript/PHP)的连接总是立即断开

php - 基于MySQL、PHP的网站统计

php - 使用 javascript/ajax 提交具有不同输入类型的 php 表单

php excel脚本陷入while循环无限循环

java - 为什么 int[] 上的 Arrays.asList 返回 List<int[]> 而不是 List<int>?