使用 PHP 对 MySQL 进行操作可以分为两步。
第一步是使用 PHP 与 MySQL 建立连接;
第二步是使用 PHP 执行 SQL 查询语言(包括增、删、改、查)。
使用 PHP 与 MySQL 建立连接
PHP 中对 MySQL 进行操作,常用的是 mysqli 这个类,在将 mysqli 实例化的过程,其实就是连接 MySQL 数据库的过程。
连接数据库需要四个参数:数据库主机地址、数据库用户名、密码、数据库名。
$host = "localhost";
$user = "root";
$psw = "KyHojzzUAIfh1dEn";
$db = "phptest";
$phptest = new mysqli($host, $user, $psw, $db);
if($phptest){
echo "Connection is successful";
}
else
echo "Failed to connect database";
?>
主机地址、用户名等参数需要根据实际情况修改。
执行结果:
Connection is successful
MySQL 查询操作
使用 PHP 对 MySQL 进行查询操作包括增、删、改、查四类。具体操作也是基于 mysqli 类来进行。
增
增加数据也就是插入数据。MySQL 对某个数据表进行插入数据的语法是这样的:
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
其中 table_name 就是待插入数据的表名,field 表示字段名(列名),而 value 表示与字段对应的值。
测试用的数据库 phptest 中只有一个表 tab1,该表包含 5 个字段,表初始为空:
PHP 中需要通过 mysqli::query()方法来执行 MySQL 查询语言。下面插入时只填写部分字段的数据。
/*
此处省去了上面连接数据库的部分,请自行补全
*/
//插入数据
$result = $phptest->query("INSERT INTO tab1 ( user_name, email, content )
VALUES
( 'tomorrow', '1107150012@qq.com','hello MySQL' )");
if($result)
echo "Insert successfully";
else
echo "Failed"
?>
执行以上代码后数据库工具查询可以看到 tab1 中已经多了一行数据,并且数据内容是与代码中所插入的内容一致的:
删
MySQL 删除数据的语法是这样的:
DELETE FROM table_name [WHERE Clause]
[WHERE Clause]表示的是一个条件,执行上面语句就是将 table_name 中符合[WHERE Clause]条件的所有数据删除。
在测试前,先在数据表中写入 5 行数据。
执行删除语句同样使用 mysqli::query()方法:
/*
此处省去了上面连接数据库的部分,请自行补全
*/
//删除数据
$result = $phptest->query("DELETE FROM tab1 WHERE id>2 AND email='123'");
if($result)
echo "Delete successfully";
else
echo "Failed"
?>
执行以上代码后,数据表中 id>2 且 email=‘123’的数据都被删除了
改
改,也可以称作更新 update,修改数据的SQL 语法如下:
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
跟上面的语法类似,全大写的是 SQL 关键字,table_name 是要修改的表名,field 表示字段名,new-value 表示新的值。
修改测试前 tab1 是这样的
具体的 PHP 代码:
/*
此处省去了上面连接数据库的部分,请自行补全
*/
//修改数据
$result = $phptest->query("UPDATE tab1 SET email='hello@tomorrow.wiki',content='Ha, It is latest!!!!'
WHERE id<3 AND user_name='tomorrow'");
if($result)
echo "Update successfully";
else
echo "Failed"
?>
执行以上代码后:
查
SQL 查询的语法如下:
SELECT column_name1,column_name2...
FROM table_name
[WHERE Clause]
column_name表示列名,也即字段名,该语法表示从某一个表中查询符合条件的、选中的列数据。下面举个例子就明白了。
/*
此处省去了上面连接数据库的部分,请自行补全
*/
// 设置编码,防止中文乱码
mysqli_query($phptest , "set names utf8");
//查询数据
$result = $phptest->query("SELECT id,user_name,content FROM tab1 WHERE id<6 AND email LIKE '%@tomorrow.wiki' ");
if($result)
echo "SELECT successfully";
else
echo "Failed";
//打印输出查询结果
$row = $result->fetch_array(MYSQLI_ASSOC);
while ($row) {
echo "用户 ID:".$row["id"] . "用户名:" . $row["user_name"] . "内容:" . $row["content"] . "" ;
echo "--------------------------------------------";
$row = $result->fetch_array(MYSQLI_ASSOC);
}
?>
数据库中的数据与查询得到的数据对比:
PHP 代码执行得到的查询结果:
Connection is successful
SELECT successfully
用户 ID:1
用户名:tomorrow
内容:Ha, It is latest!!!!
--------------------------------------------
用户 ID:4
用户名:YOU
内容:这是一个简单的例子!!!!
--------------------------------------------
用户 ID:5
用户名:Hodor
内容:这是一个简单的例子!!!! 这是一个简单的例子!!!! 这是一个简单的例子!!!!
--------------------------------------------
SELECT id,user_name,content FROM tab1 WHERE id<6 AND email LIKE '%@tomorrow.wiki'这条 SQL 查询语句表示的是,从表 tab1 中,查询 id<6 且 email 像@tomorrow.wiki 这样的数据,然后返回 id,user_name,content 对应的数据。没有被选中的列数据是不会返回的。
再来说说上面 PHP 代码,$phptest->query()执行的如果是SELECT语句并且成功的话,返回的是一个 mysqli_result 对象。
mysqli_result 该类有一个方法 fetch_array(),MYSQLI_ASSOC 是一个常量(表示关联数组),执行$result->fetch_array(MYSQLI_ASSOC)返回的是 MySQL 查询结果中的最新一行数据(关联数组的方式),并且会将该行数据从$result结果中删除。
所以,再次执行$result->fetch_array(MYSQLI_ASSOC)得到的结果是和上一次执行的是不一样的,每执行一次返回一行数据并删除,直到$result中没有数据,就返回 NULL。
TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP 入门之 MySQL 基本语法和基本操作