2017-04-30 11 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サーバのバージョンに対応するマニュアルをチェックして、正しい構文を1行目の「-12,12」の近くで使用するようにしてください。

私の間違いはありがたいです。

+1

負の制限(またはオフセット)を設定することはできません。あなたの計算をチェックしてください。しかし、問題はおそらく '$ sayfa'は数字ではないので、' 0'に変換されます。 –

+3

新しいコードでデータベースの拡張子 ** [mysql_'](http://stackoverflow.com/questions/12859942/why-shouldnt-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! */ 
} 

あなたが実行しようとした実際のクエリを表示するときには、ほぼ確実にすぐに問題を発見します。私はPaul Siegelの診断が正しいと確信しています...あなたの質問はLIMIT -12,12と言います。あなたはそれを行うことはできません™。

+1

フォーマットのビットはしばしば役立ちます – Strawberry