当前位置:Gxlcms > 数据库问题 > mysqli 预处理

mysqli 预处理

时间:2021-07-01 10:21:17 帮助过:22人阅读

  • //参数有以下四种类型:  
  • //i - integer(整型)  
  • //d - double(双精度浮点型)  
  • //s - string(字符串)  
  • //b - BLOB(binary large object:二进制大对象)  
  • $product_id=$_GET[‘product_id‘];           指定变量的值

     

    e)绑定结果格式并执行

    $stmt->bind_result($product_id,$product_info,$product_trans,$product_price);   绑定结果格式

    $stmt->execute();                发送变量,此时服务器的语句已经完整了

     f)从sql服务器中取回结果  

    预处理语句会将结果集保存在sql开辟的内存中,php开辟的内存无法直接使用(count是php函数,不是sql函数,无法直接与sql内存交互),默认情况是每次执行fetch()会从sql内存中取出一行,但是不使用store_result()就无法获取行数.当然如果你的结果只有一行,可以无视这一句.请记住:在mysqli预处理中取出数据,只能使用fetch()这是因为mysqli_stmt类并没有其它取值方法

    $stmt->store_result();     //如果用变量接收的话,会发现成功了显示1,否则显示0(所以用变量接受的值并不是结果集)

     g)获取结果集行数  $count = $stmt->num_rows();  h)输出结果
    while($field=$result->fetch_field()){
    echo $field->name."--"; //输出数据库字段信息
    }
    while($stmt->fetch()){
    echo "$product_id--$product_info--$product_trans--$product_price"; //输出取出数据信息
    }

    前面说了,既然要取值,当然前面query指定了查询字段,上句的变量用上了  i)关闭mysqli链接  
    $conn->close();
       

    !!!!!!!!非常重要,如果一个php块中需要进行多次mysqli预处理语句,在前一个预处理结束后,必须要关闭前一个预处理,才能绑定后一个预处理语句,非常重要!!!否则报错:Fatal error: Call to a member function bind_param() on boolean

    原因:mysqli是一个持久连接,需要手动关闭。

     

    本文转载自 http://www.cnblogs.com/lyf-blog/p/5728341.html

    mysqli 预处理

    标签:tar   where   utf8   连接   row   error   原因   span   ring   

    人气教程排行