2014-07-03 162 views
0

我想對我的MySQL數據庫做一個簡單的查詢並回顯結果。我收到以下錯誤:PHP中的SQL查詢語法錯誤

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

這是我的查詢代碼:我假設它是在SQL語句中的簡單的語法錯誤

$result = mysqli_query($connection, "SELECT FROM table_name WHERE value='$_POST["searchname"]'"; 
echo $result; 

,但我只是我沒有看到它。 感謝您的幫助!

+0

查看語法高亮顯示。您的字符串在搜索名稱前結束,然後PHP嘗試理解以下內容,但失敗。由於您已經在使用MySQLi,因此請使用[prepared statements](http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php),而不是現在正在做的事情。那麼你再也不會遇到這樣的問題了。 –

+0

另外,'SELECT FROM'將會中斷。你需要實際選擇一些東西。 –

回答

2

您構建一個字符串時,需要確保適當使用引號:

$result = mysqli_query($connection, "SELECT * FROM table_name WHERE value='".$_POST["searchname"]."'"; 

而且我希望大家都知道,無論哪種方式,這種類型的語句很容易受到SQL注入。理想情況下,您應該使用準備好的語句或某種驗證或轉義輸入。

+0

感謝您指出這一點。我沒想過試圖將$ _POST [「searchname」]值連接到查詢字符串中。 –

0

$result = mysqli_query($connection, "SELECT * FROM table_name WHERE value='".$_POST['searchname']."'";

把那一個鏡頭。您沒有正確添加引號,並且忘記選擇要查詢的列。

1

你有沒有在你的選擇查詢中指定的列

SELECT FROM.....

應該

SELECT * FROM....

最好是隻選擇使用一個選擇查詢時需要的列。同時保護您的SQL免受XSS攻擊。 示例:

$searchname = mysqli_real_escape_string($connection, $_POST['searchname']); 
$result = mysqli_query($connection, "SELECT col1, col2, col3 FROM table_name WHERE col2='$searchname'";