首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL in语句中从内爆数组中添加字符串周围的撇号?

如何在MySQL in语句中从内爆数组中添加字符串周围的撇号?
EN

Stack Overflow用户
提问于 2012-06-06 10:11:11
回答 3查看 2.7K关注 0票数 0

我在PHP中有以下数组:3D, 瑪丹娜, 電影, 情報, 大獨裁

我的SQL查询如下:

代码语言:javascript
复制
$query = "SELECT * FROM news 
WHERE tagkey IN (3D, 瑪丹娜, 電影, 情報, 大獨裁)";

但是这个查询提供了一个错误:Query failed

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

代码语言:javascript
复制
`3D, 瑪丹娜, 電影, 情報, 大獨裁`  

代码语言:javascript
复制
`'3D', '瑪丹娜', '電影', '情報', '大獨裁'`

因此,查询将类似于:

代码语言:javascript
复制
$query = "select * FROM news WHERE tagkey IN ('3D','瑪丹娜','電影','情報','大獨裁') ";

我当前的PHP代码:

代码语言:javascript
复制
$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 **对不起:现在我换了我的Vhost。这个脚本错误.

这:警告: array_map()函数.数组-map:第一个参数,

‘'apply_quotes',应该是NULL或有效的回调

代码语言:javascript
复制
$list = explode(',', $line["tagkey"]);
$list = array_map('apply_quotes', $list);

警告: join() function.join:错误的参数。在……里面

代码语言:javascript
复制
$query = "select * FROM news 
      WHERE tagkey IN (" . join(',', $list) . ") ";
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-06 10:29:58

更新

误解了前面的问题。

在查询中使用该项之前,必须转义数组中的每个单独项:

代码语言:javascript
复制
function apply_quotes($item)
{
    return "'" . mysql_real_escape_string($item) . "'";
}

$list = array('3D', '瑪丹娜','電影','情報','大獨裁');

$list = array_map('apply_quotes', $list);

然后,构建查询:

代码语言:javascript
复制
$query = "select * FROM news WHERE upordown = 1 AND tagkey IN (" . 
    join(',', $list) . 
    ") AND id <> $id ORDER BY udate DESC";

如果所有项都在字符串中而不是数组中,则必须首先将其转换为数组:

代码语言:javascript
复制
$list = explode(',', '3D,瑪丹娜,電影,情報,大獨裁');

我假设您使用的是mysql_函数;如果没有,请告诉我:)

票数 2
EN

Stack Overflow用户

发布于 2012-06-06 10:18:57

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

代码语言:javascript
复制
$tag_array = array_map ( function($var) {
  return "'" . mysql_real_escape_string($var) . "'";
}, $tag_array );

但我建议您使用准备好的语句(PDO米斯里,而不是很快被废弃的mysql_函数)。

票数 3
EN

Stack Overflow用户

发布于 2012-06-06 10:16:50

你的问题不清楚,但要这样做;

代码语言:javascript
复制
$tag_array = array($line["tagkey"]);
$tag_str = implode(" ", array($line["tagkey"]));
echo $tag_str;
$query = "select * FROM news WHERE upordown = 1 AND tagkey IN ('".$tag_str."') AND id <> '".$id."' ORDER BY udate DESC ";
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10912185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档