【PHP快速上手(十三)】

这篇具有很好参考价值的文章主要介绍了【PHP快速上手(十三)】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PHP快速上手(十三)

PHP 预处理语句和读取数据

PHP 预处理语句

预处理语句是一种在执行 SQL 查询之前预先编译 SQL 查询并将参数绑定到查询中的占位符的方法。这可以防止 SQL 注入攻击,并提高查询的性能,特别是当多次执行相同的查询时。在 PHP 中,可以使用 MySQLi 或 PDO 来执行预处理语句。下面详细介绍如何在 PHP 中使用 MySQLi 和 PDO 中的预处理语句。

使用 MySQLi 中的预处理语句

1. 准备预处理语句
使用 prepare() 方法准备预处理语句,并在 SQL 查询中使用占位符 ? 或命名占位符 :name 来代替实际的参数。

$sql = "INSERT INTO users (name, email) VALUES (?, ?)";
$stmt = $conn->prepare($sql);

2. 绑定参数
使用 bind_param() 方法将参数绑定到预处理语句中的占位符。

$name = "John Doe";
$email = "john@example.com";
$stmt->bind_param("ss", $name, $email);

在上面的示例中,“ss” 表示两个参数都是字符串类型。如果有更多参数,可以添加对应的类型标识符。

3. 执行预处理语句
通过调用 execute() 方法来执行预处理语句。

$stmt->execute();
使用 PDO 中的预处理语句

1. 准备预处理语句
使用 prepare() 方法准备预处理语句,并在 SQL 查询中使用占位符 ? 或命名占位符 :name 来代替实际的参数。

$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $conn->prepare($sql);

2. 绑定参数
可以使用 bindParam() 或 bindValue() 方法将参数绑定到预处理语句中的占位符。

$name = "John Doe";
$email = "john@example.com";
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);

在上面的示例中,PDO::PARAM_STR 表示参数是字符串类型。如果有其他类型的参数,可以根据需要选择不同的参数类型。

3. 执行预处理语句
通过调用 execute() 方法来执行预处理语句。

$stmt->execute();
示例:插入多条数据

下面是一个示例,演示如何使用MySQLi 的预处理语句插入多条数据:

$sql = "INSERT INTO users (name, email) VALUES (?, ?)";
$stmt = $conn->prepare($sql);

if ($stmt) {
    $users = [
        ["John Doe", "john@example.com"],
        ["Jane Doe", "jane@example.com"],
        ["Alice Smith", "alice@example.com"]
    ];

    foreach ($users as $user) {
        $stmt->bind_param("ss", $user[0], $user[1]);
        $stmt->execute();
    }

    echo "Records inserted successfully";

    $stmt->close();
} else {
    echo "Error preparing statement";
}

在上面的示例中,首先准备了一个插入语句的预处理语句,然后使用循环遍历要插入的数据,并将每个数据绑定到预处理语句中的占位符,最后执行预处理语句。

总结
预处理语句是一种在执行 SQL 查询之前预先编译 SQL 查询并将参数绑定到查询中的占位符的方法。在 PHP 中,可以使用 MySQLi 或 PDO 来执行预处理语句,这样可以防止 SQL 注入攻击,并提高查询的性能。

PHP 读取数据

当使用 MySQLi 和 PDO 读取数据时,你可以选择使用面向过程的编程风格(MySQLi 面向过程),或者面向对象的编程风格(MySQLi 面向对象和PDO)。以下是两种风格的示例以及它们的详细解释:

使用 MySQLi 面向过程读取数据

1. 连接到数据库

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

$conn = mysqli_connect($servername, $username, $password, $dbname);

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

2. 执行查询并获取结果集

$sql = "SELECT id, name, email FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
    }
} else {
    echo "0 results";
}
  1. 关闭连接
mysqli_close($conn);
使用 MySQLi 面向对象读取数据

1. 连接到数据库

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

2. 执行查询并获取结果集

$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
    }
} else {
    echo "0 results";
}

3. 关闭连接

$conn->close();
使用 PDO 读取数据

1. 连接到数据库

$dsn = "mysql:host=localhost;dbname=test";
$username = "root";
$password = "";

try {
    $conn = new PDO($dsn, $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

2. 执行查询并获取结果集

$sql = "SELECT id, name, email FROM users";
$stmt = $conn->query($sql);

if ($stmt->rowCount() > 0) {
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
    }
} else {
    echo "0 results";
}

3. 关闭连接

Copy code
$conn = null;

总结
以上是使用 MySQLi 和 PDO 两种方式读取数据的示例。无论选择哪种方式,都需要先连接到数据库,然后执行查询并处理结果集,最后关闭连接。MySQLi 和 PDO 在功能上基本相似,但 PDO 更灵活,并支持更多种类的数据库,因此在选择时可以根据个人偏好和项目需求来决定。文章来源地址https://www.toymoban.com/news/detail-860358.html

到了这里,关于【PHP快速上手(十三)】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 快速上手Spring Boot整合,开发出优雅可靠的Web应用!

    SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来 简化 Spring 应用的 初始搭建 以及 开发过程 。 使用了 Spring 框架后已经简化了我们的开发。而 SpringBoot 又是对 Spring 开发进行简化的,可想而知 SpringBoot 使用的简单及广泛性。既然 SpringBoot 是用来简化 Spring 开发的,

    2024年02月21日
    浏览(43)
  • PHP 房产网站系统Dreamweaver开发mysql数据库web结构php编程计算机网页项目

    一、源码特点     PHP 房产网站系统是一套完善的WEB设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88233553 论文 https://download.csdn.net/download/qq_41221322/88233555 PHP 房产网站系统Drea

    2024年02月12日
    浏览(57)
  • PHP教学资源管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

    一、源码特点     PHP 教学资源管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88260480 论文 https://download.csdn.net/download/qq_41221322/88260482 二、功能介绍 前

    2024年02月10日
    浏览(55)
  • PHP NBA球迷俱乐部系统Dreamweaver开发mysql数据库web结构php编程计算机网页

    一、源码特点     PHP NBA球迷俱乐部系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 基于PHP的NBA球迷俱乐部 二、功能介绍 1、前台主要功能: 系统首页 网站介绍 网站新闻浏览 球迷注册 球队简介浏

    2024年02月09日
    浏览(57)
  • 短视频矩阵系统源码开发搭建技术解析-PHP语言

    一、系统架构 整个短视频矩阵系统大概分为以下几个模块: 1.多平台账号管理 支持抖音、快手、小红书、西瓜、头条视频号等多平台账号管理。 2.视频管理模块 支持视频批量上传、批量剪辑、文字转语音,特效等功能配置 3.推荐算法模块 推荐算法模块主要用来推荐用户感兴

    2024年02月07日
    浏览(70)
  • 零基础快速上手HarmonyOS ArkTS开发1---运行Hello World、ArkTS开发语言介绍

    在华为开发者大会2023年8月4日(HDC.Together)大会上,HarmonyOS 4正式发布,其实在2021年那会学习了一点鸿蒙的开发: 不过因为现在的鸿蒙手机完全兼容Android应用,所以学习动力也不是很足,一直就搁置了,直到今年华为官方出了这么一则消息才让我对于学习它有一种紧迫感了,如

    2024年02月05日
    浏览(51)
  • 【php】windows下php运行已有php web项目环境配置教程

    本文操作系统使用的是win11,软件PhpStorm 2023.1 要安装的php版本可以在composer.json看到,下载安装对应版本 windows下载地址https://windows.php.net/download windows 8.0以前的版本在这里找https://windows.php.net/downloads/releases/archives/ Linux下载链接https://www.php.net/downloads nts表示非线程安全版本,我

    2024年02月11日
    浏览(50)
  • web安全php基础_php数据类型

    PHP 支持以下几种数据类型: String(字符串) Integer(整型) Float(浮点型) Boolean(布尔型) Array(数组) Object(对象) NULL(空值) Resource(资源类型) PHP 字符串 一个字符串是一串字符的序列,就像 “Hello world!”。 可以将任何文本放在单引号和双引号中: 执行效果如下

    2024年02月12日
    浏览(56)
  • web安全php基础_搭建php环境

    首先打开phpstudy的网站栏点击创建网站,新建一个网站(域名随便输反正是局域网)然后点击确认 如下,网站便创建好了 打开浏览器输入刚刚创建网站时输入的域名,即可看见我们的网站 然后网站好了,就可以新建项目,打开phpstorm,然后点击new project新建项目, 然后在loca

    2024年02月13日
    浏览(72)
  • web安全php基础_php语法格式与注释

    php脚本以php 开始 以 ?结束 但是先前创建页面的时候我们发现phpinfo只有php开头,并没有?结尾 在这里我们可以手动给它加上?结尾 PHP指令分隔符   与C、Perl及Java一样,PHP 需要在每个语句后用分号结束指令。在编写 PHP 代码的时候,我们需要在每一行代码指令后面添加一个分

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包