2010-11-30 53 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」會。