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中Date获取时间不正确怎么办
Jun 05 PHP
20个PHP常用类库小结
Sep 11 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
PHP 验证登陆类分享
Mar 13 PHP
Thinkphp无限级分类代码
Nov 11 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 PHP
php快速导入大量数据的实例方法
Sep 23 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
Oct 30 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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
在PHP中读取和写入WORD文档的代码
2008/04/09 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
js读取配置文件自写
2014/02/11 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
python读取excel表格生成erlang数据
2017/08/26 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
python 装饰器重要在哪
2021/02/14 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
幼儿园庆六一活动方案
2014/03/06 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL