php连接并简单操作数据库(3
预处理语句机制
分步解释php预处理的基本操作
首先,以特殊的方式定义query字符串,用’?'标识可能修改的值
$query ='select * from student where 姓名=? or 学号=? ';
然后, 将query转换成预处理语句stmt
$stmt= mysqli_prepare($link,$query);//将query转换成预处理语句stmt
第三步,为stmt中的每个‘?’绑定一个变量。函数的第二个参数,根据问号的个数和类型添加,详见百度
//为?绑定变量vall
mysqli_stmt_bind_param($stmt,'si',$name,$sno);//si表示字符串加int类型
为变量name和sno赋值,然后就可以执行sql语句了!
//为变量val赋值王二,然后执行sql语句
$ask_name="王二";
$ask_sno="3";
var_dump(mysqli_stmt_execute($stmt) );//执行成功返回true
echo "<hr>";
上面的函数无法获得结果集,那么如果想查看结果集的值怎么办?使用下面的操作
//绑定结果集的每个字段的值绑定到name、sno、sex变量中
mysqli_stmt_bind_result($stmt,$name,$sno,$sex) ;
//抓取一个结果集中的一个记录,自动存在上面绑定的变量中
mysqli_stmt_fetch($stmt);
echo "查1:{
$name}->{
$sno}->{
$sex}<br>";
//再抓取一个结果集中的一个记录,自动存在上面绑定的变量中
mysqli_stmt_fetch($stmt);
echo "查2:{
$name}->{
$sno}->{
$sex}<br>";
//再抓取就会失败,因为结果集已经空了
var_dump( mysqli_stmt_fetch($stmt) );//打印NULL
echo "查3:{
$name}->{
$sno}->{
$sex}";//这些值仍然保持上次的结果
运行结果:
代码整合:
//写好预处理语句,其中?是