2017-04-30 137 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