2017-06-19 10 views
0

私のコードでSQLインジェクションを防止しようとしているので、私のコードをsqli prepared statementに変更したいのですが、私のデータベースのすべてのユーザーを選択して、その名前と写真を表示したいのですが、誰かがコードを手伝ってください。私のデータベース内のすべてのデータを選択する準備文を使用する方法

この私の最初の罰金に動作コードが、SQLインジェクションに開いて、私は同じコードのために準備されたステートメントを使用する方法

<?php 
    if(isset($_SESSION['em'])){ 
    $eml = $_SESSION['em']; 
    $query = ("select id,fst,las,uid,pass,email,sts,ocp from Users"); 
    $res = mysqli_query($conn,$query); 

    if(mysqli_num_rows($res) > 0){ 


    while($row = mysqli_fetch_assoc($res)){ 
    $_SESSION['ids'] = $row['id']; 
    echo $row['fst']; 
    echo $row['ocp']; 
    echo $row['las']; 

    } 
    } 
    } 
    ?> 

ください

+2

に見えます:[どのように私はPHPでSQLインジェクションを防ぐことができますか?](https://stackoverflow.com/questions/60174/how-can-i-prevent- sql-injection-in-php)を使用します。これは、準備されたステートメントの使い方を示します。 – MinistryofChaps

答えて

1

あなたはあなたのクエリで任意の値を使用しない場合準備されたステートメントは必要ありません。 where句にいくつかの値を挿入した場合にのみ、それを使用する必要があります。ここ

https://secure.php.net/manual/en/mysqli.quickstart.prepared-statements.php

どのようにそれを使用するための完全なチュートリアルです。それほど複雑ではありません。値をプレースホルダに置き換えてから、クエリにパラメータをバインドする必要があります。たとえば:あなたはここを参照してくださいよう

$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"); 
$stmt->bind_param("sss", $firstname, $lastname, $email); 
$stmt->execute(); 
関連する問題