2016-03-26 3 views
-5
SELECT * FROM posts, images 
     WHERE posts.id_posts = images.posts_ID 
     AND slug='".$_GET['slug']."' AND types='facebook' ORDER BY id_posts LIMIT $init,$max 

AND types='facebook'を追加したいが、これは私にとっては適切ではない。SQLの2つのAND

エラーが表示されるだけでなく、typeカラムの結果としてfacebookも返されます。

私はPDOを使用し、SQL注入を避けるために.htaccessを設定しました。

+0

「動作していません」と定義し、関連するすべてのコンテキストを投稿してください。また、参照してください/適用http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1 – user2864740

+0

エラーメッセージ?期待される結果と実際の結果... – Musa

+0

@Musaエラーは表示されず、タイプの列の結果のfacebookを返すだけでなく、タイプの列のすべての結果を返します – Gisele

答えて

1

複数のテーブルを照会するときは、そのテーブルの各列に固有のものにすることをお勧めします。例:id_postsではなくposts.id_posts。

最初の問題は、posts.typesまたはimages.typesの代わりにposts.slugまたはimages.slugの代わりにslugを使用することです。

私は、カラムslugとタイプが両方とも投稿テーブルにあると仮定しています。

SELECT * FROM posts AS p, images AS i WHERE p.id_posts = i.posts_ID AND p.slug='" . $_GET['slug'] . "' AND p.types='facebook' ORDER BY p.id_posts LIMIT $init,$max

と仮定すると、スラグとタイプは、ポスト・テーブルの両方が、そのクエリが動作するはずです。一方または両方が画像テーブルにある場合は、pを変更します。それらの前で私に。そしてさらに試みる。

また、SQLインジェクションに関する以前の懸念をエコーすることなく、意識的にこれを投稿することはできません。私はあなたがPDOを使用していると言いましたが、ただ安全であることを確認してください。