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中for循环语句的几种变型
Mar 16 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
PHP页面中文乱码分析
Oct 29 PHP
memcache命令启动参数中文解释
Jan 13 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
Jun 13 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
PHP的Yii框架中Model模型的学习教程
Mar 29 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
PHP日志LOG类定义与用法示例
Sep 06 PHP
详解提高使用Java反射的效率方法
Apr 29 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
杏林同学录(七)
2006/10/09 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python中print和return的作用及区别解析
2019/05/05 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
python面试题之列表声明实例分析
2019/07/08 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
毕业生物理教师求职信
2013/10/17 职场文书
校领导推荐信
2013/11/01 职场文书
《雨点》教学反思
2014/02/12 职场文书
节能环保演讲稿
2014/08/28 职场文书
公务员检讨书
2014/11/01 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL