我发现了类似的问题,但还不能解决我的问题。以下是相关代码:
$query = "SELECT * FROM conceptos WHERE descripcion = '$descripcion'";
if ($result = mysql_query($query,$connection)){
if (mysql_num_rows($result) > 0){
//Do something
} else {
die($query);
exit;
}
} else {
die(mysql_errno() . ' - ' . mysql_error());
exit;
}
我没有连接或权限问题,因为此代码段位于循环内,其他查询进入“执行某些操作”部分。但是当我接受回显的查询并在phpMyAdmin中执行它时,它会按预期返回1个值。为什么?什么原因会导致这种行为?提前感谢任何建议。
答案 0 :(得分:4)
I had this problem and found that it was because I junked up my database by copy/pasting directly to the database from MS Word. Pasting had inserted special slanted apostrophes that PHPMYADMIN could apparently parse but my php code could not. Once I replaced those with a standard single quote, all was well.
答案 1 :(得分:1)
试试这个“SELECT * FROM conceptos”。如果它有效,你在“WHERE ...”中有错误的查询
答案 2 :(得分:1)
您确定您的查询正在搜索正确的说明吗?双引号应该扩展所有内部变量,但是如果存在复制到stackoverflow问题,你也会有单引号。
这将确保扩展描述以防万一。
$query = "SELECT * FROM conceptos WHERE descripcion = '" . $descripcion . "'";
其次,您是否根据@crotos?
的建议验证了您正在使用的变量内容?mysql_也不推荐使用,所以你应该使用PDO,或者至少使用mysqli _。
答案 3 :(得分:0)
您可以尝试设置mysql服务器的常规查询日志,并查看实际执行的查询。见http://dev.mysql.com/doc/refman/5.1/en/query-log.html
另外,请检查您的编码。也许你的mysql连接在ISO8859-1中,你的表字段是UTF-8(或相反)。您的数据中是否有任何重音符或特殊字符?
答案 4 :(得分:0)
我也遇到了这个问题并使用以下方法解决了问题:
mysqli_query($con,$query);
而不是
mysql_query($query);
因为它的折旧
源: