批改状态:未批改
老师批语:
对于mysqli的数据库查询操作有许多方法,我用的方法是面向对象的查询操作.
以下是我的代码.
<?php
require "config.php";//连接存放数据库的信息
error_reporting(E_ALL ^E_WARNING);//使用函数忽略告警
$mysqli = new mysqli($db['host'],$db['user'],$db['pass'], $db['name']);//使用数组进行数据库的连接,
if ($mysqli ->connect_errno) {//测试数据库是否连接成功
die('连接错误'.$mysqli->connect_errno.': '. $mysqli->connect_error);//连接失败的话返回错误信息
}//else{
// exit('连接成功');//连接成功的时候要注销掉
//};
$mysqli->set_charset($db['charset']);//设定数据库的默认编码
echo "<hr>";
echo "<h3>MySQLi的查询操作</h3>";
//准备SQL语句,其中?是占位符
$sql = "SELECT `id`,`email` FROM `user` WHERE `email` LIKE ? ";//;LTKE 配合通配符使用
// 创建预处理对象
$stmt = $mysqli->stmt_init();
if ($stmt->prepare($sql)) {
//绑定参数
$stmt->bind_param('s', $email);
/*
* 1. 该函数绑定了 SQL 的参数,且告诉数据库参数的值。 第一个值是参数填的是数据的类型。i 字符告诉数据库该参数为整数型。
参数有以下四种类型:
i - integer(整型)
d - double(双精度浮点型)
s - string(字符串)
b - BLOB(布尔值)
每个参数都需要指定类型。
*/
//设置参数
$email = '%io%';//邮箱包含io的,%是通配符
if ($stmt->execute()) {//执行这条语句
//一次性获取完所有的结果集并放到php缓存区
$stmt->store_result();
//将结果集中的列绑定到变量上
$stmt->bind_result($id, $email);
//结果集是否不为空,只有不为空的时候才遍历
if ($stmt->num_rows > 0) {
// 循环遍历结果集
// fetch()每次获取一条记录,并将指针自动下移
while ($stmt->fetch()) {
echo '<p>id:'.$id.'---邮箱:' .$email.'</p>';
}
} else {
exit('<p>当前表中没有数据</p>');
}
// 释放结果集
$stmt->free_result();
} else {
//返回执行阶段的出错信息
exit($stmt->errno. ': ' . $stmt->error);
}
} else {
//返回sql语句检测阶段的出错信息
exit($stmt->errno. ': ' . $stmt->error);
}
//注销stmt对象
$stmt->close();
//关闭连接
$mysqli->close();点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号