来自mysql的空结果,查询中带有“\”和“ - ”

时间:2015-04-27 13:31:51

标签: php mysql

我有SQL查询:

SELECT count(art),art,art_manufacturer,group_manufacturer 
FROM goods 
WHERE art_manufacturer = 'ГКБ-44/150'

当我使用phpMyAdmin时,查询结果为:

1, 950000258, ГКБ-44/150, Интерскол

我的php文件包含:

$art="ГКБ-44/150";\\debug
$query = "SELECT art,art_manufacturer,group_manufacturer FROM goods WHERE art_manufacturer = '".$art."'"; 
$sql = mysql_query($query); 
while ($recResult = mysql_fetch_array($sql)) 
{ \*do somting*\ }

我的错误在哪里?为什么php中的查询结果为空?

我的解决方案 我的代码中有mysql_query("SET NAMES cp1251"); 当我开始使用mysqli我评论mysql_query("SET NAMES cp1251"); 我错误地认为mysqli是解决方案,在我退位后mysql_query("SET NAMES cp1251");我再次遇到问题。

那发生了什么事?

我的UTF-8中的PHP文件,当我使用mysql_query("SET NAMES cp1251");时,我对mysql DB进行了SELECT art,art_manufacturer,group_manufacturer FROM goods WHERE art_manufacturer = "ГКБ-44/150";查询

2 个答案:

答案 0 :(得分:1)

它是空的,因为它们是由PHP / SQL解释的特殊保留字符。我建议你看看参数化查询或PDO,他们将为你的函数转义字符串。

编辑:也可能是您的服务器的编码不接受Unicode字符。我会确保您的网站使用的是UTF-8。

答案 1 :(得分:0)

您应该停止使用已被弃用的mysql_*个函数。

使用mysqli或PDO并将参数绑定到查询中,而不是将查询字符串与一些未准备好的php变量连接起来。

这次只是为了帮助你解决问题:

$query = "SELECT art,art_manufacturer,group_manufacturer 
    FROM goods 
    WHERE art_manufacturer = '".mysql_real_escape_string($art)."'";