Table of Contents
Introduction
PHP MySQLi extension
Database connection and query
避免 SQL 注入攻击
插入记录到数据库
Home Topics php mysql MySQL database interaction with PHP Mysqli extension

MySQL database interaction with PHP Mysqli extension

Sep 07, 2020 am 09:20 AM
mysql mysqli php

MySQL database interaction with PHP Mysqli extension

[Related learning recommendations: php programming (video)]

Introduction

I have briefly introduced how to install MySQL locally and interact with the MySQL server through the command line and GUI client software.

You can interact with MySQL through commands on the command line, and you can interact with MySQL through the graphical interface on the client software. So how to establish a connection and interaction with MySQL in a PHP program? In fact, we can regard the PHP application as a client of the MySQL server, and then interact with the MySQL server through the API provided by the encapsulated PHP extension package, just like we do in the command line and client software , but now this interaction is changed from manual operation to completed by writing corresponding PHP code.

PHP MySQLi extension

PHP officially provides many extensions for interacting with the MySQL server, from the earliest mysql to the later enhanced version of mysqli (more secure), they are all PHP functions Extension packages in the era of formal programming. Generally speaking, the local PHP integrated development environment will come with mysqli extension:

MySQL database interaction with PHP Mysqli extension

Let’s use a simple example below To demonstrate how to interact with the MySQL server through the mysqli extension.

Database connection and query

Sample code

Add a new mysql in the php_learning directory subdirectory, then create a new mysqli.php file in the subdirectory, and write a piece of code to establish a database connection and query through the mysqli extended API:

<?php $host = &#39;127.0.0.1&#39;;   // MySQL 服务器主机地址
$port = 3306;          // MySQL 服务器进程端口号
$user = &#39;root&#39;;         // 用户名
$password = &#39;root&#39;;     // 密码
$dbname = &#39;test&#39;;       // 使用的数据库名称

// 通过 mysqli 扩展建立与 mysql 服务器的连接
$conn = mysqli_connect($host, $user, $password, $dbname, $port);

// 在连接实例上进行查询
$sql = &#39;SELECT * FROM `post`&#39;;
$res = mysqli_query($conn, $sql);

// 获取所有结果
$rows = mysqli_fetch_all($res);
var_dump($rows);

// 释放资源
mysqli_free_result($res);
// 关闭连接
mysqli_close($conn);
Copy after login

Yes As you can see, the connection to the MySQL database can be established through the mysqli_connect function. We pass in 5 parameters, which are database host, user name, password, database name and port number. After the connection is successfully established, you can hold the connection. The instance executes the database query through the mysqli_query function. We pass in the SQL statement as the second parameter. The return result of the function is a query result set instance. After getting this instance, you can use mysqli_fetch_* The series function obtains the result data.

Here we get all the query results through the mysqli_fetch_all function, and start the PHP built-in HTTP server through php -S localhost:9000:

MySQL database interaction with PHP Mysqli extension

You can print the query results in the browser through http://localhost:9000/mysql/mysqli.php:

MySQL database interaction with PHP Mysqli extension

Optimize the rendering effect

At this time, the readability of the page style is very poor. You can insert a section of echo '<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">'# before printing the output result in the source code. ## Code optimization rendering effect: </pre><div class="contentsignin">Copy after login</div></div>

// 获取所有结果
$rows = mysqli_fetch_all($res);
echo '<pre class="brush:php;toolbar:false">';
var_dump($rows);
Copy after login
Refresh the browser page, you can see the following printing effect:

MySQL database interaction with PHP Mysqli extension

Related learning recommendations:

mysql tutorial(Video)

Set character encoding

There is a small problem here, that is, the Emoji emoticons are not displayed properly. The characters are garbled. We can set the character encoding to

utf8mb4 through the mysqli_set_charset function just like setting the default character encoding on the command line:

// 通过 mysqli 扩展建立与 mysql 服务器的连接
$conn = mysqli_connect($host, $user, $password, $dbname, $port);
// 设置字符编码为 utf8mb4
mysqli_set_charset($conn, 'utf8mb4');

...

// 获取所有结果
$rows = mysqli_fetch_all($res);
echo '<pre class="brush:php;toolbar:false">';
var_dump($rows[2]);
Copy after login
Refresh the page and you can see the Emoji expression:

MySQL database interaction with PHP Mysqli extension

Return to associative array

The currently returned result is an index array, and the field name corresponding to the value cannot be known. To obtain the complete field Name and field value mapping can be achieved by setting the second parameter value passed into the

mysqli_fetch_all function to MYSQLI_ASSOC (the default is MYSQLI_NUM):

// 获取所有结果(关联数组)
$rows = mysqli_fetch_all($res, MYSQLI_ASSOC);
echo '<pre class="brush:php;toolbar:false">';
var_dump($rows[2]);
Copy after login

MySQL database interaction with PHP Mysqli extension

Return a single result

All the results returned above are multiple results (even if only one record is returned, the returned result is a multi-dimensional array), Sometimes, we only want to return the first result in the result set. This can be achieved through the mysqli_fetch_row function:

// 在连接实例上进行查询
$sql = 'SELECT * FROM `post` WHERE id = 1';
$res = mysqli_query($conn, $sql);

// 获取所有结果
/*
$rows = mysqli_fetch_all($res, MYSQLI_ASSOC);
echo '<pre class="brush:php;toolbar:false">';
var_dump($rows);*/

// 获取单条结果
$row = mysqli_fetch_row($res);
echo '<pre class="brush:php;toolbar:false">';
var_dump($row);
Copy after login
Refresh the browser test page and print the results as follows:

MySQL database interaction with PHP Mysqli extension

可以看到返回结果已经是一个一维数组了,只包含一条记录。如果想要返回关联数组结果,需要通过一个新的函数 mysqli_fetch_assoc 函数来实现:

// 获取单条结果
// $row = mysqli_fetch_row($res);
$row = mysqli_fetch_assoc($res);
echo '<pre class="brush:php;toolbar:false">';
var_dump($row);
Copy after login

对应的打印结果如下:

MySQL database interaction with PHP Mysqli extension

将返回结果映射到指定对象

除了返回数组格式结果外,还可以借助 mysqli_fetch_object 函数将数据库查询结果映射到指定对象实例并返回:

class Post
{
    public $id;
    public $title;
    public $content;
    public $created_at;

    public function __toString()
    {
        return '[#' . $this->id . ']' . $this->title;
    }
}
// 将数据库返回结果映射到指定个对象
$post = mysqli_fetch_object($res, Post::class);
echo $post;
Copy after login

对应的打印结果如下,说明对象映射成功(调用了对象的魔术方法 __toString 打印输出该对象):

MySQL database interaction with PHP Mysqli extension

避免 SQL 注入攻击

在上述数据库查询操作中,我们直接将原生 SQL 语句传递给 MySQL 数据库执行,如果 SQL 语句中包含了用户传递的参数,则存在 SQL 注入风险,要避免 SQL 注入攻击,在 mysqli 扩展中,可以通过构建预处理语句的方式实现:

  1. 首先通过 mysqli_prepare 函数构建包含占位符(替代具体参数值)的预处理 SQL 语句;
  2. 然后通过 mysqli_stmt_bind_param 函数将参数值绑定到预处理语句;
  3. 最后通过 mysqli_stmt_execute 函数执行填充参数值之后的完整 SQL 语句,由于底层做了转化处理,所以这时候执行的 SQL 语句不存在 SQL 注入风险。

下面,我们以插入记录到数据库为例,演示如何通过预处理语句的方式与数据库交互,提高代码安全性。

插入记录到数据库

我们首先基于预处理语句编写插入记录到数据库的代码如下(基于上面的 $conn 连接实例):

// 插入记录到数据库
$sql = 'INSERT INTO `post` (title, content, created_at) VALUES (?, ?, ?)';
// 构建预处理 SQL 语句
$stmt = mysqli_prepare($conn, $sql);

// 绑定参数值
$title = '这是一篇测试文章';
$content = '测试文章啊啊啊
Copy after login

The above is the detailed content of MySQL database interaction with PHP Mysqli extension. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1658
14
PHP Tutorial
1257
29
C# Tutorial
1231
24
Laravel Introduction Example Laravel Introduction Example Apr 18, 2025 pm 12:45 PM

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

MySQL and phpMyAdmin: Core Features and Functions MySQL and phpMyAdmin: Core Features and Functions Apr 22, 2025 am 12:12 AM

MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.

The Continued Use of PHP: Reasons for Its Endurance The Continued Use of PHP: Reasons for Its Endurance Apr 19, 2025 am 12:23 AM

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

MySQL vs. Other Programming Languages: A Comparison MySQL vs. Other Programming Languages: A Comparison Apr 19, 2025 am 12:22 AM

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages ​​such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages ​​have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

Laravel framework installation method Laravel framework installation method Apr 18, 2025 pm 12:54 PM

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

The Compatibility of IIS and PHP: A Deep Dive The Compatibility of IIS and PHP: A Deep Dive Apr 22, 2025 am 12:01 AM

IIS and PHP are compatible and are implemented through FastCGI. 1.IIS forwards the .php file request to the FastCGI module through the configuration file. 2. The FastCGI module starts the PHP process to process requests to improve performance and stability. 3. In actual applications, you need to pay attention to configuration details, error debugging and performance optimization.

Explain the purpose of foreign keys in MySQL. Explain the purpose of foreign keys in MySQL. Apr 25, 2025 am 12:17 AM

In MySQL, the function of foreign keys is to establish the relationship between tables and ensure the consistency and integrity of the data. Foreign keys maintain the effectiveness of data through reference integrity checks and cascading operations. Pay attention to performance optimization and avoid common errors when using them.

How to safely store JavaScript objects containing functions and regular expressions to a database and restore? How to safely store JavaScript objects containing functions and regular expressions to a database and restore? Apr 19, 2025 pm 11:09 PM

Safely handle functions and regular expressions in JSON In front-end development, JavaScript is often required...

See all articles