建立我的phpmyadmin的mysql查询在PHP中没有WHERE子句

时间:2010-11-30 11:17:47

标签: php mysql

只是尝试选择没有评论的所有行或评论< 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开始。这里有点沮丧。谢谢!

3 个答案:

答案 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”不起作用。