我有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";
查询
答案 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)."'";