<?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(*)语句计算
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号