2017-04-30 160 views
1

我寫一個網站並使用php。當我寫Mysql查詢錯誤限制

$cat = mysql_query(" 
Select m.Image_link AS link 
    , m.Name 
    , m.ID 
    , c.Name AS catName 
    from movie m 
    join has_category mc 
    on m.ID = mc.movie_id 
    join category c 
    on c.ID = mc.category_id 
where c.Name = '$category' 
ORDER 
    BY ID desc" 
); 

這個查詢一切都很好,但是當我插入限制,我錯誤。

@$sayfa=$_GET['s']; 

$kacar=12; 
$toplansayfa=ceil(mysql_num_rows($cat)/$kacar); 
$baslangic=($sayfa * $kacar) - $kacar; 


$bul_cat=mysql_query(" 
Select m.Image_link AS link 
    , m.Name 
    , m.ID 
    , c.Name AS catName 
    from movie m 
    join has_category Mc 
    on m.ID = mc.movie_id 
    join category c 
    on c.ID = mc.category_id 
where c.Name = '$category' 
ORDER 
    BY ID desc 
limit $baslangic, $kacar 
"); 


echo mysql_error();-> 

你有一個錯誤的SQL語法;檢查對應於你的MySQL服務器版本正確的語法使用近「-12,12」在行1

我的mistake..thanks您有興趣的手冊。

+1

您不能設置負極限(或偏移)。檢查你的計算。但是 - 問題可能是'$ sayfa'不是一個數字,因此轉換爲'0'。 –

+3

每次使用[mysql_'](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) 在新代碼中的數據庫擴展 ** [這發生](https://media.giphy.com/media/kg9t6wEQKV7u8/giphy.gif)** 它已被棄用,並已多年,並在PHP7永遠消失。 如果您只是學習PHP,花費精力學習'PDO'或'mysqli'數據庫擴展和準備語句。 [從這裏開始](http://php.net/manual/en/book.pdo.php) – RiggsFolly

+1

**警告**:如果您只是學習PHP,請不要使用['mysql_query'] (http://php.net/manual/en/function.mysql-query.php)界面。它是如此可怕和危險的,它是PHP 7.更換喜歡[PDO是不難學(http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps刪除-pdo-for-database-access /)以及[PHP The Right Way](http://www.phptherightway.com/)等指南介紹了最佳實踐。你的用戶數據是**不是** [正確轉義](http://bobby-tables.com/php.html),並有[SQL注入漏洞](http://bobby-tables.com/),並且可以被利用。 – tadman

回答

0

與許多SQL編程錯誤一樣,它可以幫助您查看試圖運行的查詢的實際文本。

所以,試試這個:

$query = "Select movie.Image_link AS link, movie.Name, movie.ID, category.Name AS catName from (movie inner join has_category on movie.ID=has_category.movie_id inner join category on category.ID=has_category.category_id) where category.Name='$category' ORDER BY ID desc limit $baslangic, $kacar"; 

$bul_cat = mysql_query($query); /*deprecated API! */ 
if (!$bul_cat) { 
     echo "query failed: " . $query; 
     echo mysql_error(); /* deprecated API! */ 
} 

你幾乎肯定會發現問題時,馬上你顯示你試圖運行實際查詢。我相信保羅西格爾的診斷是正確的......你的查詢說LIMIT -12,12。你不能那樣做™。

+1

有些格式化通常也有幫助 – Strawberry