使用mysqli预处理示例

//修改版,加入错误信息反馈
<?php
header('Content-type:text/html;charset=utf-8');
$cnn = @new mysqli('localhost', 'root', 'root', 'test');     //加了die()居然没有代码提示,蛋疼
if($cnn->connect_errno) {
     die('连接数据库失败:' . $cnn->connect_error);
}

/**
* select语句,转化为mysqli_result类来处理
*/
$sql = 'select * from user where id>?';
$stmt = $cnn->prepare($sql) or die('预处理sql语句错误:' . $cnn->error);
$stmt->bind_param('s', $condition) or die('绑定错误:' . $stmt->error);
$condition = 1;
$stmt->execute() or die('执行错误:' . $stmt->error);

//获取mysqli_result
$rst = $stmt->get_result();
$rows = $rst->num_rows;
if($rows == 0) {
     echo '查询不到数据';
}else {
     //获取字段总数
     echo '字段总数:' . $rst->field_count . '<br>';
     //获取记录总数
     echo '记录总数:' . $rst->num_rows . '<br>';
     //获取所有字段详细信息
     echo '所有字段详细信息:';
     var_dump($rst->fetch_fields());
     echo '打印所有记录<br>';
     while($row = $rst->fetch_assoc()) {
          foreach ($row as $k => $v) {
               echo $k . '->' . $v . '-----';
          }
          echo '<br>';
     }
}
$rst->close();
$stmt->close();

/**
* 处理insert语句
*/
$stmt = $cnn->prepare('insert into user values(?,?,?)') or die('预处理sql语句错误:' . $cnn->error);
$stmt->bind_param('sss', $id, $username, $pwd) or die('绑定错误:' . $stmt->error);
$id = 6;
$username = 'sdf';
$pwd = 'dwwww';
$stmt->execute() or die('执行错误:' . $stmt->error);

//插入后的新增id
$insertID = $stmt->insert_id;
if($insertID == 0) {
     echo '没能成功插入数据';
}else {
     echo '插入后的新增id' . $stmt->insert_id . '<br>';
     //影响行数
     echo '影响行数' . $stmt->affected_rows . '<br>';
}

$stmt->close();

/**
* 处理update语句
*/
$stmt = $cnn->prepare('update user set username=? where id=?') or die('预处理sql语句错误:' . $cnn->error);
$stmt->bind_param('ss', $username, $id) or die('绑定错误:' . $stmt->error);
$username = 'kity';
$id = 1;
$stmt->execute() ;

//更新影响的行数
$affectedRows = $stmt->affected_rows;
if($affectedRows == 0) {
     echo '没能成功更新数据';
}esle {
     echo ''更新影响的行数' . $affectedRows;
}
$stmt->close();

/**
* 处理delete语句
*/
$stmt = $cnn->prepare('delete from user where id=?') or die('预处理sql语句错误:' . $cnn->error);
$stmt->bind_param('s', $id) or die('绑定错误:' . $stmt->error);;
$id = 3;
$stmt->execute() or die('执行错误:' . $stmt->error);
//删除影响的行数
$affectedID = $stmt->affected_rows;
if($affectedID == 0) {
      echo '没能成功删除';
}else {
     echo '删除影响的行数' . $stmt->affected_rows . '<br>';
}
$stmt->close();

$cnn->close();    
 
?>
 
总结:select语句就转换为 mysqli_result处理吧,mysqli_result很方便,处理字段,记录都没问题
如果是一些非select语句,那就直接用mysqli_stmt类的两个成员属性搞掂

posted on 2013-03-13 11:22  bgwan  阅读(250)  评论(0编辑  收藏  举报

导航