如何使用prepare语句选择我的数据库中的所有数据

时间:2017-06-19 22:14:15

标签: php sql

我试图阻止我的代码中的sql注入,所以我想将我的代码更改为sqli预备语句,但我的问题是无法正常工作我想选择我的数据库中的所有用户并显示他们的姓名和照片请有人帮我解决问题。

这是我的第一个工作正常但可以打开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'];

     }
    }
    }
     ?>

如何使用预备语句为相同的代码

1 个答案:

答案 0 :(得分: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();