2012-04-27 3 views
1

これは私が達成しようとしているものです:私は過去にSQLを多用してきましたが、常にPHPで決してcoldfusionであった。私はSQLクエリを作成するための構文を見てきましたが、これを思い付くことができました(私はprepareを使用することでSQLインジェクションからの保護に役立つと信じています)。私の全体的な目標は、カテゴリテーブルに対応するcat_idを持つ宝石テーブルからすべての行を引っ張る場所にページを設定することです。私はこれを正しく始めるかどうかはわかりません。宝石のテーブルには、また、私は唯一の9ページあたりの表示改ページを追加するには探しています4つのフィールド(ID、猫のID、名前、および画像)私は自分のWordpressデータベースで作成したカスタムテーブルへのSQLインジェクションプルーフコールを行う方法は?

<?php 

$categorys = $wpdb->get_results ($wpdb->prepare("SELECT id FROM $wpdb->categories 
     WHERE name = '(the_slug())'")); 

    $jewelrys = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->jewelry 
     WHERE post_status = 'publish' 
     AND cat_id = $categorys->id ")); 

    foreach ($jewelrys as $jewelry) { 
    echo '<div id="jBox"><a href="/wp-includes/images/jewelryImages/' . $jewelry->image . '"><img src="/wp-includes/images/jewelryImages/' . $jewelry->image . '" /><br />' . $jewelry->name . '</div>'; 
    } 
?> 

を持っています。任意のヒントやガイダンスは非常に高く評価されています)

更新: 単純なエコーステートメントでカテゴリをテストして、何かを引いたかどうかを確認しましたが、これは間違っていますか?

+0

+1はSQLインジェクションを心配しています。 – eggyal

答えて

3

SQLインジェクションを避けるには、プリペアドステートメントを使用します.SQLを評価するのではなく、SQLコマンドの一部とする代わりに、パラメータとしてMySQLに渡すことができます。例えば ​​-

は、あなたがMySQLのLIMIT句に見たいページネーションを実装するには

How can I prevent SQL injection in PHP?を参照してください。

SELECT ... LIMIT 0,9; -- get 9 records starting from record 0 
SELECT ... LIMIT 9,9; -- get 9 records starting from record 9 
SELECT ... LIMIT 18,9; -- get 9 records starting from record 18 
-- etc 
+0

haha​​私は知っている、haventはここに戻ってログオンする機会を持っていた、それについて申し訳ありません!はい、これは私を助けてくれました。私は時にはコーナーに自分自身をプログラムする傾向があります。= P – crohde7707

関連する問題