实例
<?php $db=new mysqli('127.0.0.1','root',''); if($db->errno) { echo '连接失败'.$db->error; } // else echo '连接成功'; $db->set_charset('utf8'); $db->select_db('php'); $query="select id,name,gender,age from student where id <?"; $stmt=$db->prepare($query); $stmt->bind_param('i',$id); $id=6; $stmt->execute(); $stmt->store_result(); $stmt->bind_result($id,$name,$gender,$age); while ($stmt->fetch()) { echo 'id是'.$id.'名字是'.$name.'性别是'.$gender.'年纪是'.$age.'<br>'; }
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php try { $pdo= new PDO("mysql:host=127.0.0.1;dbname=php",'root',''); } catch (PDOException $e){ echo 'Error:'.$e->getMessage(); } $pdo->query('set names utf8'); //echo '新增数据'; //$sql="insert into user values (:id,:name,:email,sha1(:password))"; //$stmt=$pdo->prepare($sql); //if( $stmt->execute(['id'=>'','name'=>'我不会太刀','email'=>'taidao@qq.com','password'=>123])) //{ // echo '受影响记录:'.$stmt->rowCount(); //} //else exit('操作失败'); //echo '<hr>'; //echo '删除数据'; //$sql="delete from user where id=:id"; //$stmt=$pdo->prepare($sql); //if( $stmt->execute(['id'=>4])) //{ // echo '受影响记录:'.$stmt->rowCount(); //} //else exit('操作失败'); //$sql="update user set name=:name where id=:id "; //$stmt=$pdo->prepare($sql); //if($stmt->execute(['name'=>'我超会太刀','id'=>5])) //{ // echo '受影响记录:'.$stmt->rowCount(); //} //else exit('操作失败'); $sql="select id,name,email,password from user"; $stmt=$pdo->prepare($sql); if($stmt->execute()) { if($stmt->rowCount()>0) { // foreach ($stmt->fetchAll(PDO::FETCH_ASSOC)as $current) // { // echo'id是:'.$current['id'].',名字是:'.$current['name'].'<br>'; // } while( $res=$stmt->fetch(PDO::FETCH_ASSOC) ) { echo'id是:'.$res['id'].',名字是:'.$res['name'].',email是:'.$res['email'].'<br>'; } } else exit('没有记录'); }
点击 "运行实例" 按钮查看在线实例
$stmt=$db->prepare($query); 生成一个后续可操作的对象
$stmt->bind_param()绑定变量的参数
$stmt->execute() 执行语句
$stmt->affected_rows 受影响的行数
$stmt->errno 错误代码 $stmt->error 错误信息
$stmt->close() 关闭对象
$db->close() 关闭连接
关于二维数组遍历
$data[] = ['name'=>'杨过1','salary'=>4000];
$data[] = ['name'=>'小龙女1','salary'=>5000];
$data[] = ['name'=>'金轮法王1','salary'=>8000];
foreach($data as $staff) //分别取出数据中的一条,
{
$name=$staff['name']; //然后对里面的一维数组把值取出来
$salary=$staff['salary'];
}
查询语句
$stmt=$db->stmt_init(); //初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象 注意括号内没有参数,以下内容都是建立在此基础上
$stmt->prepare($query) //预处理对象的prepare 方法来检测sql语句
$stmt->store_result() //将查询结果放入缓存区,括号内没有参数
$stmt->bind_result($id,$name,$salary); //将结果集的列绑定到变量上,
$stmt->num_rows; // Return the number of rows in statements result set 返回结果集的行数,判断是否为空
$stmt->fetch //每次获取一条记录,并将指针下移、
$stmt->free_result() // 释放结果集
熟练PDO连接
pdo 占位符不用?,用命名占位符
pdo 查询,$stmt->fetchAll() 获取所有数据 ,返回的是一个二维数组(一般不用,数据太多导致爆仓)
$stmt->fetch 返回一条数据,将关联和索引都显示。 $stmt->fetch(PDO::FETCH_ASSOC) 里面的参数表示只获取关联的数组, $stmt->fetch(PDO::FETCH_BOUND)这个参数是将结集中列的值给绑定的变量,变量用$stmt->bindcolumn()绑定注意与bindparam区分
PDO 查询 语句执行后 直接循环遍历,
$stmt->fetchColumn() 获取一行一列的值, 括号中的参数从0开始,0表示第一列,1表示第二列,指针会下移
$stmt->rowcount()返回的仅仅是DELETE INSERT UPDATE 写操作受影响的行数,而不能返回select受影响的行数,应用select count(*)语句计算