prepare_statement的mysqli_fetch_array相当于什么?

时间:2018-04-02 15:21:42

标签: php mysqli prepared-statement

我试图从表中获取一个简单单元格的字符串。 iv这样做(没有准备陈述):

if($result_ur = mysqli_query($conn_ur, $sql_log)) {
    /* this is the problem */

    $row = mysqli_fetch_array($result_ur);

    /* here finishes my problem*/

    $lvl = $row['lvl'];
    $nombre = $row['nombre'];

    $username =$row['username'];
    $email = $row['email'];
    /*blablablabla more variables*/

    echo $username." <br>".$email."<br>";


    mysqli_free_result($result_ur);
    //-- ELSE DE NUM ROWS 

它就像一个魅力!但现在我读了关于sql注射的内容,所以朋友告诉我(出于安全原因)我可以通过“准备语句”来做到这一点,所以我可以逃避注射。

im REALY丢失iv完成所有iv读取,没有... 我的服务器不允许get_result();所以即时绑定结果如此

<?php 
    include dirname(__FILE__)."/conect_reg.php";

    $nombre = $_GET['nombre'];
    echo "variable ".$nombre.", working?<br>";
    if($nombre) {
        $checkuser = $conn_reg->prepare ("SELECT * FROM  `usus` WHERE `usuario` =  ?");
        $checkuser->bind_param("s", $nombre);
        $checkuser->execute();                  
        $checkuser->store_result();                 
        $checkuser_rows = $checkuser->num_rows; 

        /* Here is the problem */   
        if($checkuser != 0) {                   
            $checkuser_res = $checkuser->bind_result($id_d,$nombre_d,$paterno_d,$materno_d,$usuario_d,$pass_d,$email_d,$lvl_d,$telefono_d,$fecha_d,$code_d,$active_d,$profileimg_d);
            return $checkuser_res;
            $row = fetch($checkuser_res);
          /*  Here finish the problem    */
        }   
    }

    echo "working?<br>";

?>

它适用于“bind_result”,(说实话,我不知道我在做什么,我就像那个用电脑狗的模因)。

我需要的是使用相当于`echo $ row ['user'];像mysqli_fetch_array

if ($row['user'] = $user){
    echo "that ";
}

但我不知道如何使用“准备语句”和“bind_result”来实现。 编辑:提出更全面的问题。

1 个答案:

答案 0 :(得分:0)

bind_result调用按$row['user']语句列的顺序将SELECT分配给单个变量,而不是与mysqli_fetch_array一起使用的数组形式。

等效功能如下:

$checkuser = $conn_reg->prepare ("SELECT `id`, `nombre`, `paterno`, `materno`, `usuario`, `pass`, `email`, `lvl`, `telefono`, `fecha`, `code`, `active`, `profileimg` FROM `usus` WHERE `usuario` =  ?"); 
$checkuser->bind_param("s", $nombre);
$checkuser->execute();
$checkuser->bind_result($id_d,$nombre_d,$paterno_d,$materno_d,$usuario_d,$pass_d,$email_d,$lvl_d,$telefono_d,$fecha_d,$code_d,$active_d,$profileimg_d);
if ($checkuser->fetch()) {
    echo $usuario_d . " Hello";
}