对于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();
运行实例 »
点击 "运行实例" 按钮查看在线实例