我在PHP中有以下数组:3D, 瑪丹娜, 電影, 情報, 大獨裁
我的SQL查询如下:
$query = "SELECT * FROM news
WHERE tagkey IN (3D, 瑪丹娜, 電影, 情報, 大獨裁)";但是这个查询提供了一个错误:Query failed。
我需要添加撇号,但如何更改?
`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 **对不起:现在我换了我的Vhost。这个脚本错误.
这:警告: array_map()函数.数组-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) . ") ";发布于 2012-06-06 10:29:58
更新
误解了前面的问题。
在查询中使用该项之前,必须转义数组中的每个单独项:
function apply_quotes($item)
{
return "'" . mysql_real_escape_string($item) . "'";
}
$list = array('3D', '瑪丹娜','電影','情報','大獨裁');
$list = array_map('apply_quotes', $list);然后,构建查询:
$query = "select * FROM news WHERE upordown = 1 AND tagkey IN (" .
join(',', $list) .
") AND id <> $id ORDER BY udate DESC";如果所有项都在字符串中而不是数组中,则必须首先将其转换为数组:
$list = explode(',', '3D,瑪丹娜,電影,情報,大獨裁');我假设您使用的是mysql_函数;如果没有,请告诉我:)
发布于 2012-06-06 10:18:57
array_map()允许您对数组的每个元素调用一个函数。
$tag_array = array_map ( function($var) {
return "'" . mysql_real_escape_string($var) . "'";
}, $tag_array );但我建议您使用准备好的语句(PDO或米斯里,而不是很快被废弃的mysql_函数)。
发布于 2012-06-06 10:16:50
你的问题不清楚,但要这样做;
$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 ";https://stackoverflow.com/questions/10912185
复制相似问题