只是尝试选择没有评论的所有行或评论< 5个字符。
从基础开始,这有效:
$query= "SELECT * FROM `comments`";
$result = mysql_query($query);
什么行不通:
$query = "SELECT * FROM `comments` WHERE `comment` = ''";
或
$sql = "SELECT * from comments WHERE LENGTH(comment) < 5 LIMIT 30";
我已经设置了限制5,因为当我对“空”注释执行COUNT时,它表示那里有4个字节。该列不是NULL(不要怪我,我没写它!)
我甚至尝试使用phpmyadmin将“空”值更改为单词“chicken”,然后运行
所以,我用phpmyadmin来改变评论的所有实例&lt; 4个字符“鸡”字样。
$query = "SELECT * FROM `comments` WHERE `comment` = 'chicken'";
与上述所有错误一样,它会喷出:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法
但如果我这样做
$emptycomment = "chicken";
$query = sprintf("SELECT * FROM `comments` WHERE `comment` = $emptycomment");
查询无效:'where子句'中的未知列'chicken'
WTF?但这在phpmyadmin中完美运行! (以上都是在稳定和alpha版本上测试过的)
我也看到别人放的地方:
$query = sprintf("SELECT * FROM `comments` WHERE `comment` = 'chicken'");
同样,上述任何一个都没有骰子。
愚蠢的是,这些都完全直接作为mysql查询工作,上面甚至由phpmyadmin生成! 我甚至更新了php到5.3.2,安装的mysql是5.1.52
我已经尝试按照示例2完全制作它,使用变量来处理所有事情。 http://php.net/manual/en/function.mysql-query.php
我在这里按照教程: http://www.devshed.com/c/a/MySQL/Null-and-Empty-Strings/3/
我在Stackoverflow浏览了大约20篇文章。
现在是上午11点15分。我从6:30开始。这里有点沮丧。谢谢!
答案 0 :(得分:2)
$ emptycomment =“chicken”; $ query = sprintf(“SELECT * FROM comments WHERE comment = $ emptycomment”);
您之后是否尝试过打印$ query?你错过了字符串变量
的引号$query = "SELECT * FROM comments WHERE comment = '" . mysql_real_escape_string($comment) . "'";
答案 1 :(得分:1)
我遇到了类似的问题,其中“空”字段不是NULL。如果你尝试鸡肉会发生什么:
$query = "SELECT * FROM comments WHERE comment LIKE '%chicken%'";
即使你有CR / LF和其他奇怪的“看不见的”字符,这也会给你一个匹配。
答案 2 :(得分:1)
根据我的经验,phpmyadmin生成的查询将引号放在我认为不应该有任何表格名称的地方,一旦我删除了它的工作原理。 I. E.“SELECT * FROM'db'。'table'”不起作用,但“SELECT * FROM table”不起作用。