PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解


Posted in PHP onFebruary 16, 2019

本文实例讲述了PHP5.5基于mysqli连接MySQL数据库和读取数据操作。分享给大家供大家参考,具体如下:

在学习1. 开启PHP的API支持

(1)首先修改您的php.ini的配置文件。

查找下面的语句:

;extension=php_mysqli.dll

将其修改为:

extension=php_mysqli.dll

(2)重新启动Apache/IIS,即可。

(3)说明:PHP需要单独的文件来支持这个扩展库,一般在PHP目录下的ext目录里能找到php_mysqli.dll文件(PHP <= 5.0.2 中是 libmysqli.dll),当然,在PHP的配置文件当中要有正确指向ext的信息(extension_dir)。假若您的PHP没有这个文件,您可以去下载PHP5的源码包。另外,这个API扩展,只能在PHP5以上版本使用。其它具体信息,请看下面。

2.PHP mysqli身份证

mysqli是“MySQL, Improved”的缩写,该扩展仅适用于PHP 5。它能用于MySQL 4.1.1和更高版本。该扩展完全支持MySQL 5.1中采用的鉴定协议,也支持预处理语句和多语句API。此外,该扩展还提供了先进的、面向对象的编程接口

<?php
  /* Connect to a MySQL server 连接数据库服务器 */
  $link = mysqli_connect(
        'localhost', /* The host to connect to 连接MySQL地址 */
        'user',   /* The user to connect as 连接MySQL用户名 */
        'password', /* The password to use 连接MySQL密码 */
        'world');  /* The default database to query 连接数据库名称*/
  if (!$link) {
    printf("Can't connect to MySQL Server. Errorcode: %s ", mysqli_connect_error());
    exit;
  }
  /* Send a query to the server 向服务器发送查询请求*/
  if ($result = mysqli_query($link, 'SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5')) {
    //print("Very large cities are: ");
    /* Fetch the results of the query 返回查询的结果 */
    while( $row = mysqli_fetch_assoc($result) ){
      printf("%s (%s) ", $row['Name'], $row['Population']);
    }
    /* Destroy the result set and free the memory used for it 结束查询释放内存 */
    mysqli_free_result($result);
  }
  /* Close the connection 关闭连接*/
  mysqli_close($link);
?>

使用 MySQLi

以下实例中我们从 myDB 数据库的 MyGuests 表读取了 id, firstname 和 lastname 列的数据并显示在页面上:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("连接失败: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
  // 输出数据
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
} else {
  echo "0 结果";
}
$conn->close();
?>

以上代码解析如下:

首先,我们设置了 SQL 语句从 MyGuests数据表中读取 id, firstname 和 lastname 三个字段。之后我们使用改 SQL 语句从数据库中取出结果集并赋给复制给变量 $result。

函数 num_rows() 判断返回的数据。

如果返回的是多条数据,函数 fetch_assoc() 将结合集放入到关联数组并循环输出。 while() 循环出结果集,并输出 id, firstname 和 lastname 三个字段值。

以下实例使用 MySQLi 面向过程的方式,效果类似以上代码:

实例 (MySQLi - 面向过程)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("连接失败: " . mysqli_connect_error());
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
  // 输出数据
  while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
} else {
  echo "0 结果";
}
mysqli_close($conn);
?>

使用 PDO (+ 预处理)

以下实例使用了预处理语句。

选取了 MyGuests 表中的 id, firstname 和 lastname 字段,并放到 HTML 表格中:

<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";
class TableRows extends RecursiveIteratorIterator {
  function __construct($it) {
    parent::__construct($it, self::LEAVES_ONLY);
  }
  function current() {
    return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
  }
  function beginChildren() {
    echo "<tr>";
  }
  function endChildren() {
    echo "</tr>" . "\n";
  }
}
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
  $stmt->execute();
  // 设置结果集为关联数组
  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
  foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
    echo $v;
  }
}
catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
详解PHP显示MySQL数据的三种方法
Jun 05 PHP
php 求质素(素数) 的实现代码
Apr 12 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
php实现的Timer页面运行时间监测类
Sep 24 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
php结合curl实现多线程抓取
Jul 09 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 #PHP
PHP fprintf()函数用法讲解
Feb 16 #PHP
PHP explode()函数用法讲解
Feb 15 #PHP
php二维数组按某个键值排序的实例讲解
Feb 15 #PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 #PHP
实例讲解PHP表单验证功能
Feb 15 #PHP
实例讲解PHP表单处理
Feb 15 #PHP
You might like
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
经济学人订阅:The Economist
2018/07/19 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
介绍一下Java的事务处理
2012/12/07 面试题
《赶海》教学反思
2014/04/20 职场文书
经济管理专业求职信
2014/06/09 职场文书
六一亲子活动总结
2014/07/01 职场文书
银行奉献演讲稿
2014/09/16 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android