2012-06-25 96 views
0

在PHP中我的SQL查詢出現錯誤。我嘗試了多個查詢,並且也厭倦了使用phpMyAdmin生成的PHP代碼。誰能幫我這個?SQL語法錯誤/無效查詢 - WAMP,phpMyAdmin

無效的查詢:您的SQL語法有錯誤;檢查對應於你的MySQL服務器版本使用附近的「正確的語法」 sample_table」 LIMIT 0,30' 在行1

這本手冊是PHP代碼:

//Connect to server 
$connect = mysql_connect("localhost", "root", ""); 
if (!$connect) { 
    die('Not connected : ' . mysql_error()); 
} 

//Connect to DB 
$db_selected = mysql_select_db("testing", $connect); 
if (!$db_selected) { 
    die ('Can\'t use foo : ' . mysql_error()); 
} 

$sql = "SELECT `Name` FROM `sample_table` LIMIT 0, 30 "; 

//Query DB table 
$sqlQuery = mysql_query($sql, $connect); 
if (!$sqlQuery) { 
    die('Invalid query: ' . mysql_error()); 
} 

//fetch the results/convert the results into an array 
while($rows = mysql_fetch_array($sqlQuery, MYSQL_NUM)) //this is happening 
{ 
    $name = $rows['name']; 
    $age = $rows['age']; 
    $ID = $rows['ID']; 

    echo "$name<br/>$age<br/>$ID<br/>"; 
} 

mysql_close($connect); 

這裏我創建的phpMyAdmin表的截圖。該表中有多個記錄。

phpMyAdmin Screenshot

+0

您在表名上使用單引號而不是反引號。如果您的表名稱與保留關鍵字不相同,則可以將其完全刪除。 –

+0

我曾嘗試使用反引號並嘗試使用其他建議,但它們都拋出了另一個錯誤。 – Navigatron

+1

你爲什麼要編輯這個問題?現在任何人都會發現哪裏出了問題 – Alfo

回答

1

更改此:

$sql = "SELECT Name FROM 'sample_table' LIMIT 0, 30 "; 

到這一點:

$sql = "SELECT `Name` FROM `sample_table` LIMIT 0, 30 "; 

請注意,我已經改變了'`

順便說一句,在echo語法應該是這樣的:

echo $name."<br/>".$age."<br/>".$ID."<br/>"; 
1

試試這個代替

SELECT Name FROM 'sample_table' LIMIT 0, 30 
0

SELECT Name FROM sample_table LIMIT 0, 30 

與SQL語句去掉引號試試:

$sql = "SELECT Name FROM sample_table LIMIT 0, 30"; 
1

相反的撇號:

SELECT Name FROM 'sample_table' LIMIT 0, 30 

使用反引號:

SELECT Name FROM `sample_table` LIMIT 0, 30 
1

反引號表示數據庫,表或列名稱。單引號向MySQL指示一個字段值。所以它試圖將'sample_table'解釋爲字段值,而不是表名,與'Name'一樣,更改爲'Name'。

已更正的腳本;

$connect = mysql_connect("localhost", "root", ""); 
if (!$connect) { 
    die('Not connected : ' . mysql_error()); 
} 

//Connect to DB 
$db_selected = mysql_select_db("testing", $connect); 
if (!$db_selected) { 
    die ('Can\'t use foo : ' . mysql_error()); 
} 

$sql = "SELECT `Name` FROM `sample_table` LIMIT 0, 30 "; 

//Query DB table 
$sqlQuery = mysql_query($sql, $connect); 
if (!$sqlQuery) { 
    die('Invalid query: ' . mysql_error()); 
} 

//fetch the results/convert the results into an array 
while($rows = mysql_fetch_array($sqlquery, MYSQL_NUM)) //this is happening 
{ 
    $name = $rows['name']; 
    $age = $rows['age']; 
    $ID = $rows['ID']; 

    echo ($name."<br />".$age."<br />".$ID."<br />"); 
/*proper echo and html syntax, remember echo is still a function that you are passing a parameter to!*/ 
}