2013-06-01 73 views
-1

我有麻煩的PHP編碼 時,該文件啓動有一個錯誤,它只是說 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 10' at line 1PHP錯誤:您在您的SQL語法

你能幫助我弄清楚什麼是錯的?

<?php 
    $open=mysql_connect('localhost','ID','PW') or die(mysql_error()); 
    mysql_select_db('personal_info',$open); 

    $tablename='writing'; 
    if($page=='') $page=1; 
    $list_num=10; 
    $page_num=10; 
    $offest=$list_num*($page-1); 

    $query="select * from $tablename"; 
    $result=mysql_query($query) or die(mysql_error()); 
    row=mysql_fetch_row($result); 
    $total_no=$row[0]; 

    $total_page=ceil($total_no/$list_num); 
    $cur_num=$total_no - $list_num*($page-1); 

    $query="select*from $tablename order by number desc limit $offset, $list_num"; 
    $result=mysql_query($query) or die (mysql_error()); 
?> 
+1

SELECT * FROM - 添加空格 – user4035

+2

縮進,換行和空格都一樣的代碼本身一樣重要,如果不是更多的話,和you''ve剛剛慘敗。 – adeneo

+0

我同意@adeneo--這段代碼接近不可讀。 「=」之前和之後的空格以及自己行中的if子句的方法塊(在他們自己的{}塊中更好)會使開發人員在維護移植後必須修改此代碼的很長時間上。真的,現在一些額外的空間不會花費任何東西。 – cori

回答

3

你的兩個查詢是:

select * from $tablename 

select*from $tablename order by number desc limit $offset, $list_num 

一種可能性是,number不在表中的字段。

雖然更有可能是$offset的問題。你沒有給它一個值,所以你的limit子句是limit ,xxx,這是不允許的。另一方面,您的值爲$offest

$offest=$list_num*($page-1); 

但願,這應該教你打印出被傳遞到數據庫的實際查詢。問題會很明顯。

+0

謝謝。我只是犯了一個錯誤,涉及$ offset – rayjang

4
$offest=$list_num*($page-1); 

您輸入的錯誤$offset,因此該值未定義。 也作爲@ user4035提到,請在SELECT*FROM附近添加空格。

如果這些問題沒有解決,請嘗試echo $query;而不是運行查詢,然後發佈結果。

此外,將查詢分解爲多行也是一種很好的做法。所以

$query="SELECT * FROM $tablename 
     ORDER BY number DESC 
     LIMIT $offset, $list_num"; 

它有助於可讀性,而且調試mysql的錯誤時,MySQL將指向包含錯誤的行。

+1

編輯你的答案,並在那裏添加你的評論,並刪除評論。 – peterm

0
<?php 
    $open=mysql_connect('localhost','ID','PW') or die(mysql_error()); 
    mysql_select_db('personal_info',$open); 

    $tablename='writing'; 
    if($page=='') $page=1; 
    $list_num=10; 
    $page_num=10; 
    $offset=$list_num*($page-1); 

    $query="SELECT * FROM $tablename"; 
    $result=mysql_query($query) or die(mysql_error()); 
    $row=mysql_fetch_row($result); 
    $total_no=$row[0]; 

    $total_page=ceil($total_no/$list_num); 
    $cur_num=$total_no - $list_num*($page-1); 

    $query="SELECT * FROM $tablename ORDER BY number DESC LIMIT $offset, $list_num"; 
    $result=mysql_query($query) or die (mysql_error()); 
?>