- MySQLi 教程
- MySQLi - 主页
- MySQLi - 简介
- MySQLi - PHP 语法
- MySQLi - 连接
- MySQLi - 创建数据库
- MySQLi - 删除数据库
- MySQLi - 选择数据库
- MySQLi - 创建表
- MySQLi - 删除表
- MySQLi - 插入查询
- MySQLi - 选择查询
- MySQLi -Where 子句
- MySQLi - 更新查询
- MySQLi - 删除查询
- MySQLi - Like 子句
- MySQLi - 对结果进行排序
- MySQLi - 使用连接
- MySQLi - 处理 NULL 值
- 获取和使用 MySQLi 元数据
- MySQL
- MySQL-安装
- MySQL - 管理
- MySQL - 数据类型
- MySQL - 正则表达式
- MySQL - 事务
- MySQL - 更改命令
- MySQL - 索引
- MySQL - 临时表
- MySQL - 克隆表
- MySQL - 使用序列
- MySQL - 处理重复项
- MySQLi 有用资源
- MySQLi - 有用的函数
- MySQLi - 快速指南
- MySQLi - 有用的资源
- MySQLi - 讨论
MySQLi - 快速指南
MySQLi - 简介
MySQLi 是 PHP 中 MySQL API 的扩展,从 PHP 5.0 开始引入。它也被称为 MySQL 改进扩展。MySQLi 背后的动机是利用 MySQL 4.1.3 及以上版本中提供的新功能。与 MySQL 扩展相比,它提供了许多优势。
MySQL 提供了面向对象的接口。它提供了面向对象和过程的方法来处理数据库操作。
面向对象的接口
<?php $mysqli = mysqli_connect("localhost", "user", "password", "database-name"); $result = mysqli_query($mysqli, "SELECT 'Welcome to MySQLi' AS _msg FROM DUAL"); $row = mysqli_fetch_assoc($result); echo $row['_msg']; ?>
程序方法
<?php $mysqli = new mysqli("localhost", "user", "password", "database-name"); $result = $mysqli→query("SELECT 'Welcome to MySQLi' AS _msg FROM DUAL"); $row = $result→fetch_assoc(); echo $row['_msg']; ?>
MySQLi 支持准备好的语句。
MySQLi 支持多条语句。
MySQLi 支持事务。
MySQLi 提供增强的调试功能。
MySQLi - PHP 语法
MySQL 可以很好地与 PERL、C、C++、JAVA 和 PHP 等各种编程语言结合使用。在这些语言中,PHP 因其 Web 应用程序开发功能而成为最受欢迎的语言。
本教程主要关注在 PHP 环境中使用 MySQL。如果您对带有 PERL 的 MySQL 感兴趣,那么您可以考虑阅读PERL教程。
PHP 提供了各种函数来访问 MySQL 数据库并操作 MySQL 数据库内的数据记录。您需要以与调用任何其他 PHP 函数相同的方式调用 PHP 函数。
与 MySQL 一起使用的 PHP 函数具有以下一般格式 -
mysqli function(value,value,...);
函数名称的第二部分是特定于函数的,通常是描述函数功能的单词。以下是我们将在教程中使用的两个函数 -
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); mysqli→query(,"SQL statement");
以下示例显示了 PHP 调用任何 MySQL 函数的通用语法。
<html> <head> <title>PHP with MySQL</title> </head> <body> <?php $retval = mysqli - > <i>function</i>(value, [value,...]); if( !$retval ) { die ( "Error: a related error message" ); } // Otherwise MySQL or PHP Statements ?> </body> </html>
从下一章开始,我们将看到所有重要的 MySQL 功能以及 PHP。
MySQLi - 连接
使用 MySQL 二进制文件的 MySQL 连接
您可以在命令提示符下使用mysql二进制文件建立 MySQL 数据库。
例子
这是一个从命令提示符连接到 MySQL 服务器的简单示例 -
[root@host]# mysql -u root -p Enter password:******
这将为您提供 mysqli 命令提示符,您可以在其中执行任何 SQL 命令。以下是上述命令的结果 -
以下代码块显示了上述代码的结果 -
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2854760 to server version: 5.0.9 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
在上面的示例中,我们使用root作为用户,但您也可以使用任何其他用户。任何用户都可以执行该用户允许的所有 SQL 操作。
您可以随时在 mysql> 提示符下使用exit命令断开与 MySQL 数据库的连接。
mysql> exit Bye
使用 PHP 脚本连接 MySQL
PHP 提供mysqli结构或mysqli_connect()函数来打开数据库连接。该函数采用六个参数,成功时返回 MySQL 链接标识符,失败时返回 FALSE。
句法
$mysqli = new mysqli($host, $username, $passwd, $dbName, $port, $socket);
先生。 | 参数及说明 |
---|---|
1 |
$主机 可选 - 运行数据库服务器的主机名。如果未指定,则默认值为localhost:3306。 |
2 |
$用户名 可选 - 访问数据库的用户名。如果未指定,则默认值将是拥有服务器进程的用户的名称。 |
3 |
$密码 可选 - 访问数据库的用户的密码。如果未指定,则默认密码为空。 |
4 |
$数据库名称 可选 - 要执行查询的数据库名称。 |
5 |
$端口 可选 - 尝试连接到 MySQL 服务器的端口号。 |
6 |
$套接字 可选 - 应使用的套接字或命名管道。 |
您可以随时使用另一个 PHP 函数close()断开与 MySQL 数据库的连接。
句法
$mysqli→close();
例子
尝试以下示例来连接到 MySQL 服务器 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Connecting MySQL Server</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。
Connected successfully.
MySQLi - 创建数据库
使用 mysqladmin 创建数据库
您需要特殊权限才能创建或删除 MySQL 数据库。因此,假设您有权访问 root 用户,您可以使用 mysql mysqladmin二进制文件创建任何数据库。
例子
这是一个创建名为TUTORIALS 的数据库的简单示例-
[root@host]# mysqladmin -u root -p create TUTORIALS Enter password:******
这将创建一个名为 TUTORIALS 的 MySQL 数据库。
使用 PHP 脚本创建数据库
PHP 使用mysqli query()或mysql_query()函数来创建或删除 MySQL 数据库。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 | $sql 必需 - 用于创建 MySQL 数据库的 SQL 查询。 |
2 | $结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例来创建数据库 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head><title>Creating MySQL Database</title></head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); if ($mysqli→query("CREATE DATABASE TUTORIALS")) { printf("Database TUTORIALS created successfully.<br />"); } if ($mysqli→errno) { printf("Could not create database: %s<br />", $mysqli→error); } $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。
Connected successfully. Database TUTORIALS created successfully.
MySQLi - 删除数据库
使用 mysqladmin 删除数据库
您需要特殊权限才能创建或删除 MySQL 数据库。因此,假设您有权访问 root 用户,您可以使用 mysql mysqladmin二进制文件创建任何数据库。
删除任何数据库时请务必小心,因为您将丢失数据库中的所有可用数据。
这是删除上一章中创建的数据库(TUTORIALS)的示例 -
[root@host]# mysqladmin -u root -p drop TUTORIALS Enter password:******
这将向您发出警告,并确认您是否确实要删除该数据库。
Dropping the database is potentially a very bad thing to do. Any data stored in the database will be destroyed. Do you really want to drop the 'TUTORIALS' database [y/N] y Database "TUTORIALS" dropped
使用 PHP 脚本删除数据库
PHP 使用mysqli query()或mysql_query()函数来删除 MySQL 数据库。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 |
$sql 必需 - 用于删除 MySQL 数据库的 SQL 查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例来删除数据库 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head><title>Dropping MySQL Database</title></head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass); if($mysqli->connect_errno ) { printf("Connect failed: %s<br />", $mysqli->connect_error); exit(); } printf('Connected successfully.<br />'); if ($mysqli->query("Drop DATABASE TUTORIALS")) { printf("Database TUTORIALS dropped successfully.<br />"); } if ($mysqli->errno) { printf("Could not drop database: %s<br />", $mysqli->error); } $mysqli->close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。
Connected successfully. Database TUTORIALS dropped successfully.
MySQLi - 选择数据库
连接到 MySQL 服务器后,需要选择要使用的数据库。这是因为 MySQL 服务器可能有多个可用的数据库。
从命令提示符中选择 MySQL 数据库
从 mysql> 提示符中选择数据库非常简单。您可以使用SQL 命令来选择数据库。
例子
这是选择名为TUTORIALS 的数据库的示例-
[root@host]# mysql -u root -p Enter password:****** mysql> use TUTORIALS; Database changed mysql>
现在,您已经选择了TUTORIALS数据库,后续的所有操作都将在TUTORIALS数据库上进行。
注意- 所有数据库名称、表名称、表字段名称均区分大小写。因此,在给出任何 SQL 命令时,您必须使用正确的名称。
使用 PHP 脚本选择 MySQL 数据库
PHP 使用mysqli_select_db函数来选择要执行查询的数据库。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
mysqli_select_db ( mysqli $link , string $dbname ) : bool
先生。 | 参数及说明 |
---|---|
1 |
$链接 必需 - 由 mysqli_connect() 或 mysqli_init() 返回的链接标识符。 |
2 |
$数据库名称 必需 - 要连接的数据库的名称。 |
例子
尝试以下示例来选择数据库 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Selecting MySQL Database</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysqli_error($conn)); } echo 'Connected successfully<br />'; $retval = mysqli_select_db( $conn, 'TUTORIALS' ); if(! $retval ) { die('Could not select database: ' . mysqli_error($conn)); } echo "Database TUTORIALS selected successfully\n"; mysqli_close($conn); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。
Database TUTORIALS selected successfully
MySQLi - 创建表
首先,表创建命令需要以下详细信息 -
- 表名
- 字段名称
- 每个字段的定义
句法
以下是创建 MySQL 表的通用 SQL 语法 -
CREATE TABLE table_name (column_name column_type);
现在,我们将在TUTORIALS数据库中创建下表。
create table tutorials_tbl( tutorial_id INT NOT NULL AUTO_INCREMENT, tutorial_title VARCHAR(100) NOT NULL, tutorial_author VARCHAR(40) NOT NULL, submission_date DATE, PRIMARY KEY ( tutorial_id ) );
在这里,有几项需要解释 -
使用字段属性NOT NULL是因为我们不希望该字段为 NULL。因此,如果用户尝试创建具有 NULL 值的记录,那么 MySQL 将引发错误。
字段属性AUTO_INCRMENT告诉 MySQL 继续将下一个可用数字添加到 id 字段。
关键字PRIMARY KEY用于将列定义为主键。您可以使用以逗号分隔的多个列来定义主键。
从命令提示符创建表
通过 mysql> 提示符可以轻松创建 MySQL 表。您将使用 SQL 命令CREATE TABLE来创建表。
例子
这是一个示例,它将创建tutorials_tbl -
root@host# mysql -u root -p Enter password:******* mysql> use TUTORIALS; Database changed mysql> CREATE TABLE tutorials_tbl( → tutorial_id INT NOT NULL AUTO_INCREMENT, → tutorial_title VARCHAR(100) NOT NULL, → tutorial_author VARCHAR(40) NOT NULL, → submission_date DATE, → PRIMARY KEY ( tutorial_id ) → ); Query OK, 0 rows affected (0.16 sec) mysql>
注意- MySQL 不会终止命令,除非您在 SQL 命令末尾给出分号 (;)。
使用 PHP 脚本创建表
PHP 使用mysqli query()或mysql_query()函数创建 MySQL 表。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 |
$sql 必需 - 用于创建 MySQL 表的 SQL 查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例来创建一个表 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Creating MySQL Table</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); $sql = "CREATE TABLE tutorials_tbl( ". "tutorial_id INT NOT NULL AUTO_INCREMENT, ". "tutorial_title VARCHAR(100) NOT NULL, ". "tutorial_author VARCHAR(40) NOT NULL, ". "submission_date DATE, ". "PRIMARY KEY ( tutorial_id )); "; if ($mysqli→query($sql)) { printf("Table tutorials_tbl created successfully.<br />"); } if ($mysqli→errno) { printf("Could not create table: %s<br />", $mysqli→error); } $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。
Connected successfully. Table tutorials_tbl created successfully.
MySQLi - 删除表
删除现有的 MySQL 表非常容易,但删除任何现有表时需要非常小心,因为删除表后丢失的数据将无法恢复。
句法
下面是删除 MySQL 表的通用 SQL 语法 -
DROP TABLE table_name ;
从命令提示符删除表
要从命令提示符删除表,我们需要在 mysql> 提示符下执行 DROP TABLE SQL 命令。
例子
以下程序是删除tutorials_tbl的示例-
root@host# mysql -u root -p Enter password:******* mysql> use TUTORIALS; Database changed mysql> DROP TABLE tutorials_tbl Query OK, 0 rows affected (0.8 sec) mysql>
使用 PHP 脚本删除表
PHP 使用mysqli query()或mysql_query()函数删除 MySQL 表。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 |
$sql 必需 - 用于删除表的 SQL 查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例来删除表 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Dropping MySQL Table</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); if ($mysqli→query("Drop Table tutorials_tbl")) { printf("Table tutorials_tbl dropped successfully.<br />"); } if ($mysqli→errno) { printf("Could not drop table: %s<br />", $mysqli→error); } $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。
Connected successfully. Table tutorials_tbl dropped successfully.
MySQLi - 插入查询
要将数据插入 MySQL 表,您需要使用 SQL INSERT INTO命令。您可以使用 mysql> 提示符或使用任何脚本(例如 PHP)将数据插入 MySQL 表中。
句法
以下是 INSERT INTO 命令的通用 SQL 语法,用于将数据插入 MySQL 表 -
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
要插入字符串数据类型,需要将所有值保留在双引号或单引号中。例如“值”。
从命令提示符插入数据
要从命令提示符插入数据,我们将使用 SQL INSERT INTO 命令将数据插入 MySQL 表tutorials_tbl。
例子
以下示例将在tutorials_tbl表中创建3条记录 -
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> INSERT INTO tutorials_tbl →(tutorial_title, tutorial_author, submission_date) →VALUES →("Learn PHP", "John Poul", NOW()); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO tutorials_tbl →(tutorial_title, tutorial_author, submission_date) →VALUES →("Learn MySQL", "Abdul S", NOW()); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO tutorials_tbl →(tutorial_title, tutorial_author, submission_date) →VALUES →("JAVA Tutorial", "Sanjay", '2007-05-06'); Query OK, 1 row affected (0.01 sec) mysql>
注意- 请注意所有箭头符号 (→) 并不是 SQL 命令的一部分。它们指示新行,并且由 MySQL 提示符自动创建,同时按 Enter 键,而不在命令的每行末尾给出分号。
在上面的示例中,我们没有提供tutorial_id,因为在创建表时,我们已经为此字段指定了AUTO_INCRMENT选项。因此 MySQL 会自动插入这些 ID。这里,NOW()是一个MySQL函数,它返回当前日期和时间。
使用 PHP 脚本插入数据
PHP 使用mysqli query()或mysql_query()函数将记录插入 MySQL 表中。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 |
$sql 必需 - 用于将记录插入表中的 SQL 查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
此示例将从用户处获取三个参数并将它们插入到 MySQL 表中 - -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Add New Record in MySQL Database</title> </head> <body> <?php if(isset($_POST['add'])) { $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); if(! get_magic_quotes_gpc() ) { $tutorial_title = addslashes ($_POST['tutorial_title']); $tutorial_author = addslashes ($_POST['tutorial_author']); } else { $tutorial_title = $_POST['tutorial_title']; $tutorial_author = $_POST['tutorial_author']; } $submission_date = $_POST['submission_date']; $sql = "INSERT INTO tutorials_tbl ". "(tutorial_title,tutorial_author, submission_date) "."VALUES ". "('$tutorial_title','$tutorial_author','$submission_date')"; if ($mysqli→query($sql)) { printf("Record inserted successfully.<br />"); } if ($mysqli→errno) { printf("Could not insert record into table: %s<br />", $mysqli→error); } $mysqli→close(); } else { ?> <form method = "post" action = "<?php $_PHP_SELF ?>"> <table width = "600" border = "0" cellspacing = "1" cellpadding = "2"> <tr> <td width = "250">Tutorial Title</td> <td><input name = "tutorial_title" type = "text" id = "tutorial_title"></td> </tr> <tr> <td width = "250">Tutorial Author</td> <td><input name = "tutorial_author" type = "text" id = "tutorial_author"></td> </tr> <tr> <td width = "250">Submission Date [ yyyy-mm-dd ]</td> <td><input name = "submission_date" type = "text" id = "submission_date"></td> </tr> <tr> <td width = "250"> </td> <td></td> </tr> <tr> <td width = "250"> </td> <td><input name = "add" type = "submit" id = "add" value = "Add Tutorial"></td> </tr> </table> </form> <?php } ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php,输入详细信息并验证提交表单时的输出。
Record inserted successfully.
在进行数据插入时,最好使用函数get_magic_quotes_gpc()来检查当前的 magic quote 配置是否已设置。如果此函数返回 false,则使用函数addslashes()在引号前添加斜杠。
您可以进行许多验证来检查输入的数据是否正确,并可以采取适当的操作。
MySQLi - 选择查询
SQL SELECT命令用于从 MySQL 数据库获取数据。您可以在 mysql> 提示符以及任何脚本(如 PHP)中使用此命令。
句法
以下是从 MySQL 表中获取数据的 SELECT 命令的通用 SQL 语法 -
SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE Clause] [OFFSET M ][LIMIT N]
您可以使用一个或多个以逗号分隔的表来包含使用 WHERE 子句的各种条件,但 WHERE 子句是 SELECT 命令的可选部分。
您可以在单个 SELECT 命令中获取一个或多个字段。
您可以指定星号 (*) 来代替字段。在这种情况下,SELECT 将返回所有字段。
您可以使用 WHERE 子句指定任何条件。
您可以使用OFFSET指定一个偏移量,从该偏移量 SELECT 将开始返回记录。默认情况下,偏移量从零开始。
您可以使用LIMIT属性限制退货数量。
从命令提示符获取数据
这将使用 SQL SELECT 命令从 MySQL 表tutorials_tbl获取数据。
例子
以下示例将返回tutorials_tbl表中的所有记录-
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 1 | Learn PHP | John Poul | 2007-05-21 | | 2 | Learn MySQL | Abdul S | 2007-05-21 | | 3 | JAVA Tutorial | Sanjay | 2007-05-21 | +-------------+----------------+-----------------+-----------------+ 3 rows in set (0.01 sec) mysql>
使用 PHP 脚本获取数据
PHP 使用mysqli query()或mysql_query()函数从 MySQL 表中选择记录。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 |
$sql 必需 - 用于从 MySQL 表中选择记录的 SQL 查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例从表中选择一条记录 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Creating MySQL Table</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl"; $result = $mysqli->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", $row["tutorial_id"], $row["tutorial_title"], $row["tutorial_author"], $row["submission_date"]); } } else { printf('No record found.<br />'); } mysqli_free_result($result); $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。在这里,我们在运行选择脚本之前在表中输入了多条记录。
Connected successfully. Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021 Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021 Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021 Id: 4, Title: Java Tutorial, Author: Mahesh, Date: 2021 Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021
MySQLi - WHERE 子句
我们已经看到了从 MySQL 表中获取数据的SQL SELECT命令。我们可以使用称为WHERE 子句的条件子句来过滤结果。使用此 WHERE 子句,我们可以指定选择标准以从表中选择所需的记录。
句法
以下代码块具有 SELECT 命令的通用 SQL 语法,带有 WHERE 子句,用于从 MySQL 表中获取数据 -
SELECT field1, field2,...fieldN table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
您可以使用一个或多个由逗号分隔的表来包含使用 WHERE 子句的各种条件,但 WHERE 子句是 SELECT 命令的可选部分。
您可以使用 WHERE 子句指定任何条件。
您可以使用AND或OR运算符指定多个条件。
WHERE 子句还可以与 DELETE 或 UPDATE SQL 命令一起使用来指定条件。
WHERE子句的工作方式类似于任何编程语言中的if 条件。该子句用于将给定值与 MySQL 表中可用的字段值进行比较。如果外部给定的值等于 MySQL 表中的可用字段值,则返回该行。
以下是可与WHERE子句一起使用的运算符列表。
假设字段 A 包含 10,字段 B 包含 20,则 -
操作员 | 描述 | 例子 |
---|---|---|
= | 检查两个操作数的值是否相等,如果相等,则条件成立。 | (A = B) 不正确。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件成立。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | (A > B) 不正确。 |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | (A >= B) 不正确。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | (A <= B) 为真。 |
当您想要从表中获取选定的行时,特别是当您使用MySQL Join时,WHERE 子句非常有用。连接将在另一章中讨论。
使用主键搜索记录是一种常见的做法,可以使搜索速度更快。
如果给定条件与表中的任何记录都不匹配,则查询将不会返回任何行。
从命令提示符获取数据
这将使用带有 WHERE 子句的 SQL SELECT 命令从 MySQL 表tutorials_tbl中获取所选数据。
例子
以下示例将返回tutorials_tbl表中作者姓名为Sanjay的所有记录。
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl WHERE tutorial_author = 'Sanjay'; +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 3 | JAVA Tutorial | Sanjay | 2007-05-21 | +-------------+----------------+-----------------+-----------------+ 1 rows in set (0.01 sec) mysql>
除非对字符串执行LIKE比较,否则比较不区分大小写。您可以使用BINARY关键字使搜索区分大小写,如下所示 -
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl \ WHERE BINARY tutorial_author = 'sanjay'; Empty set (0.02 sec) mysql>
使用 PHP 脚本获取数据
PHP 使用mysqli query()或mysql_query()函数通过 where 子句选择 MySQL 表中的记录。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 | $sql 必需 - 使用Where子句在MySQL表中选择记录的SQL查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例,使用表中的 where 子句选择记录 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Using Where Clause</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl where tutorial_author = "Mahesh"'; $result = $mysqli→query($sql); if ($result→num_rows > 0) { while($row = $result→fetch_assoc()) { printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", $row["tutorial_id"], $row["tutorial_title"], $row["tutorial_author"], $row["submission_date"]); } } else { printf('No record found.<br />'); } mysqli_free_result($result); $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。在这里,我们在运行选择脚本之前在表中输入了多条记录。
Connected successfully. Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021 Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021 Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021
MySQLi - 更新查询
可能存在需要修改 MySQL 表中现有数据的需求。您可以使用 SQL UPDATE命令来执行此操作。这将修改任何 MySQL 表的任何字段值。
句法
以下代码块具有 UPDATE 命令的通用 SQL 语法,用于修改 MySQL 表中的数据 -
UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]
- 您可以更新一个或多个字段。
- 您可以使用 WHERE 子句指定任何条件。
- 您一次可以更新一个表中的值。
当您想要更新表中选定的行时,WHERE 子句非常有用。
从命令提示符更新数据
这将使用带有 WHERE 子句的 SQL UPDATE 命令来更新 MySQL 表tutorials_tbl中的选定数据。
例子
以下示例将更新tutorial_id 为3 的记录的tutorial_title字段。
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> UPDATE tutorials_tbl → SET tutorial_title = 'Learning JAVA' → WHERE tutorial_id = 3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql>
使用 PHP 脚本更新数据
PHP 使用mysqli query()或mysql_query()函数来更新 MySQL 表中的记录。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 |
$sql 必需 - 用于更新 MySQL 表中记录的 SQL 查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例来更新表中的记录 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Updating MySQL Table</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); if ($mysqli→query('UPDATE tutorials_tbl set tutorial_title = "Learning Java" where tutorial_id = 4')) { printf("Table tutorials_tbl updated successfully.<br />"); } if ($mysqli→errno) { printf("Could not update table: %s<br />", $mysqli→error); } $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl"; $result = $mysqli→query($sql); if ($result→num_rows > 0) { while($row = $result→fetch_assoc()) { printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", $row["tutorial_id"], $row["tutorial_title"], $row["tutorial_author"], $row["submission_date"]); } } else { printf('No record found.<br />'); } mysqli_free_result($result); $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。在这里,我们在运行选择脚本之前在表中输入了多条记录。
Connected successfully. Table tutorials_tbl updated successfully. Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021 Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021 Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021 Id: 4, Title: Learning Java, Author: Mahesh, Date: 2021 Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021
MySQLi - 删除查询
如果你想从任何 MySQL 表中删除一条记录,那么你可以使用 SQL 命令DELETE FROM。您可以在 mysql> 提示符以及任何脚本(如 PHP)中使用此命令。
句法
以下代码块具有 DELETE 命令的通用 SQL 语法,用于从 MySQL 表中删除数据。
DELETE FROM table_name [WHERE Clause]
如果未指定 WHERE 子句,则将从给定 MySQL 表中删除所有记录。
您可以使用 WHERE 子句指定任何条件。
您一次可以删除单个表中的记录。
当您想要删除表中选定的行时,WHERE 子句非常有用。
从命令提示符删除数据
这将使用带有 WHERE 子句的 SQL DELETE 命令将选定的数据删除到 MySQL 表 –tutorials_tbl中。
例子
以下示例将从tutorial_tbl中删除tutorial_id为3的记录。
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> DELETE FROM tutorials_tbl WHERE tutorial_id=3; Query OK, 1 row affected (0.23 sec) mysql>
使用 PHP 脚本删除数据
PHP 使用mysqli query()或mysql_query()函数删除 MySQL 表中的记录。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 |
$sql 必需 - 用于删除 MySQL 表中记录的 SQL 查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例来删除表中的记录 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Deleting MySQL Table record</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); if ($mysqli→query('DELETE FROM tutorials_tbl where tutorial_id = 4')) { printf("Table tutorials_tbl record deleted successfully.<br />"); } if ($mysqli→errno) { printf("Could not delete record from table: %s<br />", $mysqli→error); } $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl"; $result = $mysqli→query($sql); if ($result→num_rows > 0) { while($row = $result→fetch_assoc()) { printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", $row["tutorial_id"], $row["tutorial_title"], $row["tutorial_author"], $row["submission_date"]); } } else { printf('No record found.<br />'); } mysqli_free_result($result); $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。在这里,我们在运行选择脚本之前在表中输入了多条记录。
Connected successfully. Table tutorials_tbl record deleted successfully. Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021 Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021 Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021 Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021
MySQLi - Like 子句
我们已经看到了从 MySQL 表中获取数据的SQL SELECT命令。我们还可以使用称为WHERE子句的条件子句来选择所需的记录。
当我们想要进行精确匹配时,带有“等于”符号 (=) 的 WHERE 子句可以很好地工作。就像“tutorial_author = 'Sanjay'”一样。但可能有一个要求,我们想要过滤掉所有tutorial_author名称应包含“jay”的结果。这可以使用SQL LIKE 子句和 WHERE 子句来处理。
如果 SQL LIKE 子句与 % 字符一起使用,那么它将像 UNIX 中的元字符 (*) 一样工作,同时在命令提示符下列出所有文件或目录。如果没有 % 字符,LIKE 子句与等号和 WHERE 子句非常相同。
句法
以下代码块具有 SELECT 命令的通用 SQL 语法以及 LIKE 子句,用于从 MySQL 表中获取数据。
SELECT field1, field2,...fieldN table_name1, table_name2... WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
您可以使用 WHERE 子句指定任何条件。
您可以将 LIKE 子句与 WHERE 子句一起使用。
您可以使用 LIKE 子句代替等号。
当 LIKE 与 % 符号一起使用时,它将像元字符搜索一样工作。
您可以使用AND或OR运算符指定多个条件。
WHERE...LIKE 子句还可以与 DELETE 或 UPDATE SQL 命令一起使用来指定条件。
在命令提示符下使用 LIKE 子句
这将使用带有 WHERE...LIKE 子句的 SQL SELECT 命令从 MySQL 表tutorials_tbl中获取选定的数据。
例子
以下示例将返回tutorials_tbl表中作者姓名以jay结尾的所有记录-
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl → WHERE tutorial_author LIKE '%jay'; +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 3 | JAVA Tutorial | Sanjay | 2007-05-21 | +-------------+----------------+-----------------+-----------------+ 1 rows in set (0.01 sec) mysql>
在 PHP 脚本中使用 LIKE 子句
PHP 使用mysqli query()或mysql_query()函数通过 Like 子句选择 MySQL 表中的记录。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 |
$sql 必需 - 使用 Like 子句在 MySQL 表中选择记录的 SQL 查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例,在表中使用 like 子句选择记录 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Using Like Clause</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl where tutorial_author like "Mah%"'; $result = $mysqli→query($sql); if ($result→num_rows > 0) { while($row = $result→fetch_assoc()) { printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", $row["tutorial_id"], $row["tutorial_title"], $row["tutorial_author"], $row["submission_date"]); } } else { printf('No record found.<br />'); } mysqli_free_result($result); $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。在这里,我们在运行选择脚本之前在表中输入了多条记录。
Connected successfully. Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021 Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021 Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021
MySQLi - 对结果进行排序
我们已经看到了从 MySQL 表中获取数据的SQL SELECT命令。当您选择行时,MySQL 服务器可以自由地以任何顺序返回它们,除非您通过说明如何对结果进行排序来指示它。但是,您可以通过添加一个ORDER BY子句来对结果集进行排序,该子句命名要排序的一个或多个列。
句法
以下代码块是 SELECT 命令的通用 SQL 语法以及 ORDER BY 子句,用于对 MySQL 表中的数据进行排序。
SELECT field1, field2,...fieldN table_name1, table_name2... ORDER BY field1, [field2...] [ASC [DESC]]
您可以对任何字段的返回结果进行排序(如果该字段已列出)。
您可以对多个字段的结果进行排序。
您可以使用关键字 ASC 或 DESC 来按升序或降序排列结果。默认情况下,它是升序。
您可以按照通常的方式使用 WHERE...LIKE 子句来设置条件。
在命令提示符下使用 ORDER BY 子句
这将使用带有ORDER BY子句的 SQL SELECT 命令从 MySQL 表tutorials_tbl中获取数据。
例子
尝试以下示例,该示例按升序返回结果。
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl ORDER BY tutorial_author ASC +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 2 | Learn MySQL | Abdul S | 2007-05-24 | | 1 | Learn PHP | John Poul | 2007-05-24 | | 3 | JAVA Tutorial | Sanjay | 2007-05-06 | +-------------+----------------+-----------------+-----------------+ 3 rows in set (0.42 sec) mysql>
验证按升序列出的所有作者姓名。
在 PHP 脚本中使用 ORDER BY 子句
PHP 使用mysqli query()或mysql_query()函数从 MySQL 表中获取排序记录。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
$mysqli→query($sql,$resultmode)
先生。 | 参数及说明 |
---|---|
1 |
$sql 必需 - 用于从表中获取排序记录的 SQL 查询。 |
2 |
$结果模式 可选 - 常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT,具体取决于所需的Behave。默认情况下,使用 MYSQLI_STORE_RESULT。 |
例子
尝试以下示例从表中获取排序记录 -
将以下示例复制并粘贴为 mysql_example.php -
<html> <head> <title>Sorting MySQL Table records</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl order by tutorial_title asc"; $result = $mysqli→query($sql); if ($result→num_rows > 0) { while($row = $result→fetch_assoc()) { printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", $row["tutorial_id"], $row["tutorial_title"], $row["tutorial_author"], $row["submission_date"]); } } else { printf('No record found.<br />'); } mysqli_free_result($result); $mysqli→close(); ?> </body> </html>
输出
访问部署在 apache Web 服务器上的 mysql_example.php 并验证输出。
Connected successfully. Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021 Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021 Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021 Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021
MySQLi - 使用连接
在前面的章节中,我们一次从一个表中获取数据。这对于简单的任务来说已经足够了,但在大多数现实世界的 MySQL 使用中,您经常需要在单个查询中从多个表中获取数据。