|
1
|
应用环境
|
|
|
|
|
mysqli预处理功能(大量数据处理时使用)
|
|
2
|
步骤
|
|
|
|
a)mysqli连接数据库
|
$mysqli = new mysqli('localhost','root','root','chuanzhi');
|
|
|
b)设置编码
|
$mysqli->set_charset('gb2312');
|
|
|
c)发送query语句
|
使用$mysqli->prepare($query)这个方法表示是预处理,如果涉及到取值,必须指定查询字段
$query = "select id,proName,proClass,proPrice from product where id>?";
$stmt = $mysqli->prepare($query);
|
|
|
d)提供条件
|
比如上句用了?作为不确定的值,就需要指定
$stmt->bind_param('i', $id); 用变量绑定?表示的值,i表示整型,d表示浮点型,b代表二进制,s代表其它的所有
$id='1'; 指定变量的值
$stmt->execute(); 发送变量,此时服务器的语句已经完整了
|
|
|
e)从sql服务器中取回结果
|
预处理语句会将结果集保存在sql开辟的内存中,php开辟的内存无法直接使用(count是php函数,不是sql函数,无法直接与sql内存交互),默认情况是每次执行fetch()会从sql内存中取出一行,但是不使用store_result()就无法获取行数.当然如果你的结果只有一行,可以无视这一句.请记住:在mysqli预处理中取出数据,只能使用fetch()这是因为mysqli_stmt类并没有其它取值方法
$stmt->store_result();//如果用变量接收的话,会发现成功了显示1,否则显示0
|
|
|
f)获取结果集行数
|
$count = $stmt->num_rows();
|
|
|
g)绑定结果集需要输出的字段
|
$stmt->bind_result($id,$proName,$proClass,$proPrice); 名字无所谓,反正按顺序对应query的字段,变量个数要和query字段个数一致
|
|
|
h)输出结果
|
前面说了,既然要取值,当然前面query指定了查询字段,上句的变量用上了
|
|
|
i)
|
你懂的,关闭mysqli链接
|