首页
学习
活动
专区
圈层
工具
发布

php怎么支持mysqli

PHP 支持 MySQLi(MySQL Improved Extension)扩展,用于访问 MySQL 数据库。MySQLi 提供了面向对象和过程式的 API,支持预处理语句、事务处理、多语句执行等功能,提供了更好的性能和安全性。

基础概念

MySQLi 是 PHP 的一个扩展,它允许 PHP 应用程序与 MySQL 数据库进行交互。MySQLi 支持最新的 MySQL 版本,并提供了改进的性能和更多的功能。

优势

  1. 性能提升:MySQLi 相比于早期的 MySQL 扩展有更好的性能。
  2. 安全性增强:支持预处理语句,可以有效防止 SQL 注入攻击。
  3. 功能丰富:支持事务处理、存储过程、多语句执行等高级功能。

类型

MySQLi 提供了两种编程接口:

  1. 面向对象接口:使用类和对象的方法来操作数据库。
  2. 过程式接口:使用函数调用来操作数据库。

应用场景

MySQLi 适用于需要与 MySQL 数据库进行交互的各种 PHP 应用程序,包括但不限于:

  • Web 应用程序
  • 命令行工具
  • RESTful API 服务

如何使用

安装

在大多数现代 PHP 环境中,MySQLi 扩展默认是开启的。如果需要手动启用,可以在 php.ini 文件中取消以下行的注释:

代码语言:txt
复制
extension=mysqli

面向对象示例

代码语言:txt
复制
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
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();
?>

过程式示例

代码语言:txt
复制
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 检查连接
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);
?>

遇到的问题及解决方法

问题:无法连接到 MySQL 数据库

原因

  • 数据库服务器未启动。
  • 用户名、密码或数据库名称错误。
  • 防火墙阻止连接。

解决方法

  1. 确保 MySQL 服务器正在运行。
  2. 检查并确认用户名、密码和数据库名称是否正确。
  3. 检查防火墙设置,确保允许 PHP 应用程序连接到 MySQL 服务器。

问题:SQL 注入

原因

  • 直接将用户输入拼接到 SQL 查询中。

解决方法

  1. 使用预处理语句和参数绑定。
  2. 对用户输入进行验证和清理。

参考链接

通过以上信息,你应该能够了解 PHP 如何支持 MySQLi 以及如何在实际应用中使用它。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP中的MySQLi扩展学习(一)MySQLi介绍

只面向过程 不支持 存储过程 、 多语句执行 、 预处理语句 PHP7 中已经删除了并且完全不支持 然后是 PDO 。...支持面向对象和面向过程两种写法 仅支持 MySQL 数据库 支持 存储过程 、 多语句执行 、 预处理语句 跟随 PHP 及 MySQL 的版本更新,可以更快速地支持更多的 MySQL 高级特性 从它们三个的这些特点来看...,MySQL(原始)扩展肯定是不推荐了,就算是老的项目,只要是支持 PDO 或 MySQLi 的 PHP 版本,都应该考虑将数据库的连接转换成这两种方式之一。...扩展的安装及 MySQL8 需要注意的地方 MySQLi 的扩展是随 PHP 源码一起发布的,我们在编译 PHP 的时候加上 --with-mysqli 就可以了。...而 MySQLi 虽然只支持 MySQL 数据库,但它却可以同时支持面向对象和面向过程两种写法。是我们针对老项目代码进行升级优化的好帮手。同时,它还是现在入门 PHP 学习相关数据库操作的首选。

4.3K00

Swoole 4.1.0 支持 PHP 原生 Redis 、 PDO 、 MySQLi 协程化

重大新特性 支持 Redis/PDO/MySQLi 从 4.1.0 版本开始支持了对 PHP 原生 Redis 、 PDO 、 MySQLi 协程化的支持。...可使用 Swoole\Runtime::enableCorotuine() 将普通的同步阻塞 Redis 、 PDO 、 MySQLi 操作变为协程调度的异步非阻塞 IO Swoole\Runtime:...- #0 Swoole\Coroutine::sleep(10) called at [/home/htf/workspace/swoole/examples/coroutine/backtrace.php...Solaris 系统支持 Http2支持 MAX_FRAME_SIZE 分帧发送和 MAX_HEADER_LIST_SIZE 处理, 客户端增加 isStreamExist 方法检测是否存在对应流 swoole_http_response...修复HTTP2的 onRequest 回调中没有协程的问题 修复 tasking_num 某些特殊情况下变为 -1 的问题 修复HTTP2-server的window-update帧构造错误 修复所有PHP

1.4K20
  • PHP中的MySQLi扩展学习(一)MySQLi介绍

    只面向过程 不支持 存储过程 、 多语句执行 、 预处理语句 PHP7 中已经删除了并且完全不支持 然后是 PDO 。...仅支持面向对象方式使用 可以连接多种数据库,切换数据库带来的变更少,甚至可能不用修改代码 支持 存储过程 、 多语句执行 、 预处理语句 最后就是 MySQLi 。...支持面向对象和面向过程两种写法 仅支持 MySQL 数据库 支持 存储过程 、 多语句执行 、 预处理语句 跟随 PHP 及 MySQL 的版本更新,可以更快速地支持更多的 MySQL 高级特性 从它们三个的这些特点来看...,MySQL(原始)扩展肯定是不推荐了,就算是老的项目,只要是支持 PDO 或 MySQLi 的 PHP 版本,都应该考虑将数据库的连接转换成这两种方式之一。...而 MySQLi 虽然只支持 MySQL 数据库,但它却可以同时支持面向对象和面向过程两种写法。是我们针对老项目代码进行升级优化的好帮手。同时,它还是现在入门 PHP 学习相关数据库操作的首选。

    4K20

    PHP扩展 Mysql 与 Mysqli

    从 PHP 5.5.0 起这个扩展已经被废弃,并且从 PHP 7.0.0. 开始被移除。 作为替代,可以使用 mysqli 或者 PDO_MySQL 扩展代替。 MySQL 增强版。...特性比较 特性 mysqli mysql PHP版本 >=5.0 >3.0 MySQL开发状态 活跃 仅维护 MySQL建议使用 首选 建议 API的字符集支持 是 否 存储过程支持情况 是 否 多语句执行支持情况...是 否 是否支持所有MySQL4.1以上功能 是 否 MySQLi 的 i 代表 Improvement。...相关概念 MySQL 与 MySQLi 都是PHP方面的函数集。 在 PHP5 版本以后,增加了mysqli的函数功能。 某种意义上讲,它是MySQL系统函数的增强版,更稳定更高效更安全。...建议 PHP版本为5.x建议使用 mysqli 扩展。 PHP版本为7 只能使用 mysqli 扩展。 Thanks ~

    4.1K30

    PHP Mysqli 常用代码集合

    PHP5.0开始,不仅可以使用早期的mysql数据库扩展函数,还能使用新扩展的mysqli技术实现与mysql数据库的信息交流,PHP的mysqli扩展被封装在在一个类中,它是一种面向对象技术,只能在PHP5...和MYSQL4,1或更高的版本才能使用,(i)表示该进,使用mysqli,执行速度更快,更方便,更高效,也可以使数据库访问更安全(因为用类模式) 使用mysqli 简单流程 设置PHP.ini 配置文件...建立MYSQL配置文件 config.ini.php config.ini.php 内容如下: 微信图片_20191129171010.jpg 用mysqli链接MYSQL数据库: 微信图片_20191129171025...(1);  $mysqli->close(); mysql 目前只有InnDB和BDB两种数据包类型才支持事务 InnoDB最快 创建InnDB类型表: 微信图片_20191129171156....jpg 以上就是PHP Mysqli 常用代码集合所有详细内容。

    2.7K20

    PHP中的MySQLi扩展学习(三)mysqli的基本操作

    PHP中的MySQLi扩展学习(三)mysqli的基本操作 我们继续 MySQLi 扩展的学习,上篇文章中提到过,MySQLi 的扩展相对于 PDO 来说功能更加的丰富,所以我们依然还会在学习过程中穿插各种...执行多条 SQL 语句 执行多条 SQL 语句的能力对于 PDO 来说是无法实现的,不过据说 PDO 是支持的,语句是可以正常执行的,但是我们拿不到完整的返回结果。...var_dump($mysqli->next_result()); echo '========', PHP_EOL; } while($mysqli->more_results() ); //...测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/6.PHP中的MySQLi扩展学习(三)mysqli...的基本操作.php 参考文档: https://www.php.net/manual/zh/book.mysqli.php

    4.4K20

    PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句

    所以在这里,我们就不再多讲理论方面的东西了,直接上代码来看看 MySQLi 中这两大特性与 PDO 在使用上的区别。 事务处理 首先,我们还是要让 MySQLi 对于错误的语句也报出异常来。...而在 MySQLi 中,我们则需要指定 MySQLi_Driver 对象中的报错属性为抛出异常,很明显,MySQLi_Driver 就是 MySQLi 的驱动对象。...// 使用异常处理错误情况 $driver = new mysqli_driver(); $driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT...try { // 开始事务 $mysqli->begin_transaction(); $mysqli->query("insert into tran_innodb (name...12)"); // 不存在的表 // 提交事务 $mysqli->commit(); } catch (Exception $e) { // 回滚事务 $mysqli

    3.8K00

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作 就像 PDO 中的 PDO_Statment 对象一样,MySQLI_STMT 对象也是一个预处理语句所形成的对象,专门用来操作 MySQLi...接下来,我们看看如果绑定了错误的类型会怎么样,以及 MySQLI_STMT 中关于错误信息的提示。...可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。...测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/8.PHP中的MySQLi扩展学习(五)MySQLI_STMT...对象操作.php 参考文档: https://www.php.net/manual/zh/book.mysqli.php

    3.4K10

    PHP怎么连接和操作MySQL数据库-MySQLi 面向对象的方式

    PHP连接和操作MySQL数据库的常用方式有3种,分别是MySQLi (面向对象),MySQLi (面向过程),PDO (面向对象)。...MySQLi和PDO 都是PHP的扩展,MySQLi只针对 MySQL 数据库,PDO则可以应用在十几种数据库中。而面向对象和面向过程是项目开发中两种不同的编程思想。...PHP与数据库的交互是先连接,再操作,最后关闭连接。其中操作包括插入,读取,修改,删除这四个基本的功能。以下演示的将是MySQLi (面向对象)的代码示例。...php //数据库地址 $servername = "localhost"; //数据库账号 $username = "root"; //数据库密码 $password = "123456"; //数据库名称...php // 第三步 关闭连接 $conn->close(); ?>

    4.3K10

    PHP怎么连接和操作MySQL数据库-MySQLi 面向过程的方式

    PHP连接和操作MySQL数据库的常用方式有3种,分别是MySQLi (面向对象),MySQLi (面向过程),PDO (面向对象)。...MySQLi和PDO 都是PHP的扩展,MySQLi只针对 MySQL 数据库,PDO则可以应用在十几种数据库中。而面向对象和面向过程是项目开发中两种不同的编程思想。...PHP与数据库的交互是先连接,再操作,最后关闭连接。其中操作包括插入,读取,修改,删除这四个基本的功能。以下演示的将是MySQLi (面向过程)的代码示例。...php // 插入操作 // 编写SQL的插入语句 $sql_insert = "INSERT INTO admin (username, password) VALUES ('Jane', '123456..."" . mysqli_error($conn); } ?> 第三步 关闭连接 php // 第三步 关闭连接 mysqli_close($conn); ?>

    4.2K10

    PHP+Mysqli 事务处理

    MYSQL php PHP+Mysqli 事务处理 php+mysqli 事物处理 事物就是如果两条或多条数据只要有一条SQL语句错误,那么已经执行成功的执行回滚操作,把已经生效的SQL语句回滚为原来的值...代码 直接看代码吧 //SQL连接 $mysqli = new mysqli('127.0.0.1','root','root','test');//实例化Mysqli对象,参数分别是:数据库主机地址,...用户名,密码,数据库名 if (mysqli_connect_errno()) {//判断数据库连接是否错误 die(mysqli_connect_error()); } $mysqli->set_charset...'; if($mysqli->multi_query($sql)){//multi_query() 可以同时执行多条SQL语句 $status_1= $mysqli->affected_rows...>commit();//提交事务 }else{ $mysqli->rollback();//回滚 } } $mysqli->autocommit(true);//关闭事务 $mysqli

    1.5K10

    PHP mysqli_multi_query 连续执行的坑

    .;"; mysqli_multi_query($link, $sql1); mysqli_multi_query($link, $sql2); 发现只有 sql1 的语句被执行了, 后面的没被执行....想想以前做 java 批量更新的时候类似这样的语句执行的很happy 啊,为什么轮到 php 的时候就这鸟样了, 最开始还以为是自己的 sql 语句写的有问题,但是拿到 mysql 的客户端一执行, 没问题...然后就猜到应该是 mysqli_multi_query 这个函数的问题了. google 了一把, 有个文章里提到了参考官方手册. 对啊, 有问题可以看看官方文档怎么说的....php // BAD CODE: $mysqli->multi_query(" Many SQL queries ; "); // OK $mysqli->query(" SQL statement #1...php // WORKING CODE: $mysqli->multi_query(" Many SQL queries ; "); // OK while ($mysqli->next_result(

    2.4K60

    通过 PHP Mysqli 扩展与数据库交互

    2、PHP MySQLi 扩展 PHP 官方提供了很多用于与 MySQL 服务器进行交互的扩展,从最早的 mysql 到后来增强版的 mysqli(更加安全),它们都是 PHP 函数式编程时代的扩展包,...一般来说,本地 PHP 集成开发环境都会自带 mysqli 扩展: ?...2.1 数据库连接与查询 示例代码 在 php_learning 目录下新增一个 mysql 子目录,然后在该子目录下新建一个 mysqli.php 文件,编写一段通过 mysqli 扩展 API 建立数据库连接和查询的代码...另外,mysqli 扩展也支持面向对象风格,你可以参照官方文档的示例,通过面向对象的风格实现本篇教程的示例代码。...下篇教程,我们来演示如何通过生而面向对象的、扩展性更强的、支持更多数据库的 PDO 扩展建立与 MySQL 数据库服务器的连接和交互。 (全文完)

    4.7K20
    领券