我有一個MySQL表看起來像這樣:PHP MySQL查詢返回NULL
index | tag | posts
-------------------------
1 | cats | 9,10
2 | a cat | 9,10
3 | kitty | 9,10
4 | meow | 9,10
我想剛剛返回與搜索查詢匹配的行。 我用一個簡單的?search=cats
通過搜索參數。 這是我使用的PHP:
$search = $_GET['search'];
$query = mysql_query("SELECT * FROM tags WHERE tag = '$search'");
echo(mysql_num_rows($query));
$result = mysql_fetch_array($query);
$print = $result['posts'];
echo($print);
然而mysql_num_rows($query)
打印0和$print
返回null。我可以($print == "")
檢查,其結果爲真,並mysql_num_rows($query)
返回4 我試着設置了搜索查詢的東西,是不是在該表和按預期的重新調整FALSE。我也嘗試刪除WHERE tag = '$search'
,它返回表應該像。
有什麼我可以忽略?
編輯
帶着大家的意見,我現在使用的代碼是:
$search = mysql_real_escape_string($_GET['search']);
var_dump($search); //prints string(4) "cats" just like it should
$queryText = "SELECT * FROM tags WHERE tag = '%".$search."%'";
echo($queryText); //SELECT * FROM tags WHERE tag = '%cats%'
$query = mysql_query($queryText) or die(mysql_error()); //no error
$rows = mysql_num_rows($query); //this returns 0 and I know it should match 1 row
echo('rows: '.$rows);
$result = mysql_fetch_array($query);
$print = $result['posts'];
echo($print); //empty
仍然有同樣的問題。該mysql_query
被重新調整,而不是空的行或FALSE如果它不匹配。
(今後我將使用mysqli
API,但我想芬蘭這個項目mysql
。感謝您的建議和意見)
兩兩件事:$搜索後 1.回聲= $ _GET ['search'];確實搜索詞被填充。 2.將查詢更改爲$ query = mysql_query(「SELECT * FROM tags WHERE tag ='$ search'」)或die(mysql_error()); 並告訴我們輸出是什麼。 –
歡迎來到Stack Overflow! [**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Touki
確保你確切知道發送到MySQL服務器的內容。 '$ queryText =「SELECT * FROM tags WHERE tag ='$ search'」; print($ queryText);'也試着把'或者死(mysql_error);'放在'mysql_query()'的同一行。 –