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程序中的常见漏洞进行攻击
Oct 09 PHP
服务器web工具 php环境下
Dec 29 PHP
PHP面向对象法则
Feb 23 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
Sep 01 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 PHP
PHP的PDO大对象(LOBs)
Jan 27 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 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
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Python中的类学习笔记
2014/09/23 Python
Python中的with...as用法介绍
2015/05/28 Python
python常用函数详解
2016/09/13 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
几个MySql的面试题
2013/04/22 面试题
元旦晚会邀请函
2014/02/01 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
解除财产保全担保书
2014/05/20 职场文书
政府四风问题整改措施
2014/10/04 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
2016中秋节广告语
2016/01/28 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS