2010-11-30 28 views
1

试图选择所有没有评论的行或评论< 5个字符。建立的MySQL查询我的phpmyadmin不能在PHP中使用WHERE子句

从基础开始,这个工程:

$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个字节。列不为空(不要怪我,我没写呢!)

我甚至已经使用phpMyAdmin改变“空”值单词“鸡”的尝试,那么在运行

因此,我使用phpmyadmin将4个字符的所有注释实例更改为单词“chicken”。

$query = "SELECT * FROM `comments` WHERE `comment` = 'chicken'"; 

与所有上述错误,它喷出了:

您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的“正确的语法手册”第1行

但如果我这样做

$emptycomment = "chicken"; 
$query = sprintf("SELECT * FROM `comments` WHERE `comment` = $emptycomment"); 

查询无效:未知列“鸡”在“where子句”

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/

我浏览这里约20篇文章,在#1。

现在是上午11:15。我在六点半开始。在这里感到有点沮丧。谢谢!

+0

值得注意的是,PHP只是您用来生成碰巧是SQL语句的字符串的工具。 MySQL服务器永远不会看到你的PHP代码:只有结果字符串。在设法获得返回适当结果的SQL语句之前,您不应该关心PHP。 – 2010-11-30 11:41:34

回答

2

$ emptycomment =“chicken”; $ query = sprintf(“SELECT * FROM comments WHERE comment = $ emptycomment”);

您试过打印$查询吗?你错过了字符串变量的引号

$query = "SELECT * FROM comments WHERE comment = '" . mysql_real_escape_string($comment) . "'"; 
+0

是的,查询回声为 整个查询:SELECT * FROM`comments` WHERE`url` ='chicken' 但是我也试过:“SELECT * FROM`comments` WHERE`comment` ='$ emptycomment' “和”选择*从`评论`在哪里`comment` = \“$ emptycomment \”“ – talkingnews 2010-11-30 11:23:11

+0

@talkingnews:不要说谎。 – zerkms 2010-11-30 11:23:43

1

我遇到了类似的问题,其中“空”字段不是NULL。

$query = "SELECT * FROM comments WHERE comment LIKE '%chicken%'"; 

这会给你,即使你有CR/LF等怪“看不见”的角色参与比赛:如果你试图与鸡会发生什么。

1

从我的经验来看,由phpmyadmin生成的查询将引用放在我认为不应该有任何表名的地方,并且一旦我删除它的作品。 I. E.“SELECT * FROM'db'。'table'”不起作用,但是“SELECT * FROM table”会。