php
  • mysql
  • mysqli
  • 2016-07-21 11 views 0 likes 
    0

    私はPHPとプログラミングに新しいですが、私のMySQLdatabaseテーブルのいずれかの各行の結果をprintにしようとしています。非効率的であること、私は、これはまた、セキュリティ上のリスクがあることも想定してるほかforeach文を使用してMySQLの行をPHPで出力する方法は?

    while($placeHolder = $query->fetch_assoc()){ // use assoc 
        echo "<div class='placeHolder'><img src=" . $placeHolder['photo']. " /></div>"; 
        echo "<br />"; 
    } 
    
    while($placeHolder2 = $query2->fetch_assoc()){ 
        echo "<div class='placeHolder2'>" . $placeHolder2['name'] . "</div>"; 
        echo "<br />"; 
    } 
    
    //etc, etc... 
    

    whileループのセットを使用して、私はこれを達成しました。

    foreachという文を使用するとよいでしょうか?私はそれが任意の少ない安全/危険な結果になるだろうから印刷するにはforeach文を使用してと思ういけない

    $query = mysqli_query($conx, $sql); 
    $query2 = mysqli_query($conx, $sql); 
    
    $sql = ('SELECT id,name,picture FROM table ORDER BY name DESC LIMIT 50'); 
    
    +0

    は '$のquery2'と' $ query'同じクエリ(脇選択されている列からの)はありますか?これにより、XSS注射が可能になります。 SQLがなければ、SQLインジェクションがあるかどうかはわかりません。 – chris85

    +0

    はいそうです。それはとても面白いです。私はあなたにSQLを編集して表示します。 – Jimbu

    +0

    これを1回のフェッチで行うことができます。 「写真」と「名前」の割り当て方法によっては、XSSの注射が可能です。属性も引用する必要があります。 'src = '" '' ''' ' – chris85

    答えて

    0

    は、ここで私は含めるのを忘れて、私のSQLコードです。それは本当にあなたのクエリに依存します。そこに注入することができるクエリの何を見て:あなたはmysqlnd

    編集インストールされている必要がありますfetch_all **使用する

    $result = $query->fetch_all(MYSQLI_ASSOC); 
    foreach($result as $row) { 
        echo $row['photo']; 
    } 
    

    注:あなたのような何かをするforeachを使用して、それらのすべてに印刷することができるはずです。クエリに外部変数が使用されていないので、安全です。最初に投稿したwhileループを使用します。

    編集2:ドキュメントをfetch_allするためのリンク:http://php.net/manual/en/mysqli-result.fetch-all.php

    関連する問題