一、PHP连接MySQL数据库 PHP 编程语言要想操作 MySQL,执行 SQL 语句,进行增删改查,首先必须要与 MYSQL 数据库建立连接,才能进行数据的存储与查询读取.PHP 要想连接 MYSQL 数据库,需要 MySQL 服务器地址、用户名、密码和数据库名称.
实战-PHP 连接 MySQL 数据库 面向对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php $servername = "localhost" ; $username = "root" ; $password = "root123" ; $dbname = "ksxt" ; $conn = new mysqli ($servername , $username , $password , $dbname );if ($conn ->connect_error) { die ("Connection failed: " . $conn ->connect_error); } echo "Connected successfully" ;$conn ->close ();?>
面向过程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?php $servername = "localhost" ;$username = "root" ;$password = "root123" ; $conn = mysqli_connect ($servername , $username , $password ); if (!$conn ) { die ("Connection failed: " . mysqli_connect_error ()); } echo "连接成功" ; mysqli_close ($conn );?>
面向对象和面向过程的区别
面向对象和面向过程是两种不同的编程范式,用于组织和设计代码.
在面向过程的编程中,代码主要以过程或函数为中心,通过一系列的函数调用来完成任务.在PHP中,面向过程的方式使用mysqli或PDO扩展来连接和操作MySQL数据库.你需要手动编写连接、查询和关闭连接等功能的代码.
而在面向对象的编程中,代码主要以对象为中心,通过定义和使用类、对象、方法和属性来组织和实现功能.在PHP中,使用面向对象的方式连接MySQL数据库可以使用mysqli或PDO扩展的面向对象接口.你可以创建一个数据库连接对象,通过调用该对象的方法来执行查询、插入、更新等操作.这种方式更加灵活和易于维护,也更符合现代软件开发的需求.
连接数据库好用简洁代码(面向过程) 1 2 3 4 5 6 7 8 9 10 <?php $servername ="127.0.0.1" ; $username ="root" ; $password ="root123" ; $db_name ="ksxt" ; $conn = mysqli_connect ($servername ,$username ,$password ,$db_name ); if (!$conn ){ die ('数据库连接失败' .mysql_connect_error ()); } ?>
mysqli_connect_error() 函数 mysqli_connect_error() 函数返回上一次连接错误的错误描述.
返回值:返回一个描述错误的字符串.如果没有错误发生则返回 NULL.
二、MySQL 语句的执行 mysqli_query() 函数 mysqli_query() 函数执行某个针对数据库的查询.
语法:
1 mysqli_query(connection,query);
参数:
connection: 必需.规定要使用的 MySQL 连接.
query: 必需,规定查询字符串.
返回值: 针对成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,将返回一个 mysqli_result 对象.针对其他成功的查询,将返回 TRUE.如果失败,则返回 FALSE.
例 :如下例子将执行从ksxt
数据库中 user
表中选取user_name="admin"
的内容的SQL语句
:
1 2 3 4 5 6 7 8 9 10 11 <?php $con =mysqli_connect ("127.0.0.1" ,"root" ,"root123" ,"ksxt" );if (mysqli_connect_errno ()){ echo "连接失败: " . mysqli_connect_error (); } $sql ="select * from sys_user where username='admin'" ;$result = mysqli_query ($con ,$sql );?>
三、SQL语句查询结果的输出 mysqli_fetch_array() 函数 mysqli_fetch_array()函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有.
注意 :该函数返回的字段名是区分大小写的.
用法:
1 mysqli_fetch_array(result,resulttype);
参数:
result 必需.规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符.
resulttype 可选.规定应该产生哪种类型的数组.可以是以下值中的一个:
MYSQLI_ASSOC
MYSQLI_NUM
MYSQLI_BOTH
返回值 : 返回与读取行匹配的字符串数组.如果结果集中没有更多的行则返回 NULL.
例 :如下例子将从ksxt
数据库中 sys_user
表中选取username="admin"
的password
数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?php $con =mysqli_connect ("127.0.0.1" ,"root" ,"root123" ,"ksxt" );if (mysqli_connect_error ()){ echo "连接失败: " . mysqli_connect_error (); } $sql ="select * from sys_user where user_name='admin'" ;$result = mysqli_query ($con ,$sql );while ($row = mysqli_fetch_array ($result )){ echo $row ['user_name' ] . " " . $row ['password' ]; echo "<br>" ; } ?>
注 :由于mysqli_fetch_array()
函数只从结果集中取得一行
作为关联数组,那么当查询结果为多行的情况时,便可以结合一个while
循环将数据逐行输出,想要输出所有的多行关联数组数据,除了可以mysqli_fetch_array()
函数结合while
循环,还可以使用mysqli_fetch_all() 函数
.
显示结果:
mysqli_fetch_all() 函数 mysqli_fetch_all()函数从结果集中取得所有行作为关联数组,或数字数组,或二者兼有.
注意 :该函数返回的字段名是区分大小写的.
用法:
1 mysqli_fetch_all(result,resulttype);
参数:
result 必需.规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符.
resulttype 可选.规定应该产生哪种类型的数组.可以是以下值中的一个:
MYSQLI_ASSOC
MYSQLI_NUM
MYSQLI_BOTH
返回值 : 返回包含结果行的关联数组或数字数组.
例 :如下例子将从ksxt
数据库中 sys_user
表中选取并输出所有username
和password
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?php $con =mysqli_connect ("127.0.0.1" ,"root" ,"root123" ,"ksxt" );if (mysqli_connect_error ()){ echo "连接失败: " . mysqli_connect_error (); } $sql ="select * from sys_user" ;$result = mysqli_query ($con ,$sql );$array =mysqli_fetch_all ($result ,MYSQLI_ASSOC);foreach ($array as $key => $row ){ echo $row ['user_name' ] . " " . $row ['password' ]; echo "<br>" ; } ?>
四、SQL语句查询结果的行数 mysqli_num_rows() 函数 mysqli_num_rows() 函数返回结果集中行的数量.
语法:
1 mmysqli_num_rows(result);
参数:
result 必需.规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符.
返回值: 结果集中行的数量.例 :如下例子将sql语句的结果集行数输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $con =mysqli_connect ("127.0.0.1" ,"root" ,"root123" ,"ksxt" );if (mysqli_connect_error ()){ echo "连接失败: " . mysqli_connect_error (); } $sql ="select * from sys_user where user_name='康维'" ;$result = mysqli_query ($con ,$sql );echo "查询结果的行数为:" .mysqli_num_rows ($result );?>
五、PHP MySQL 创建数据库 数据库存有一个或多个表.
你需要 CREATE 权限来创建或删除 MySQL 数据库.
接下来都将以面向过程的方式来执行sql语句.
面向过程创建数据库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <?php $servername = "localhost" ;$username = "root" ;$password = "root123" ; $conn = mysqli_connect ($servername , $username , $password );if (!$conn ) { die ("连接失败: " . mysqli_connect_error ()); } $sql = "CREATE DATABASE myDB" ;if (mysqli_query ($conn , $sql )) { echo "数据库创建成功" ; } else { echo "Error creating database: " . mysqli_error ($conn ); } mysqli_close ($conn );?>
六、PHP 创建 MySQL 表 一个数据表有一个唯一名称,并有行和列组成.
sql语句设计 CREATE TABLE 语句用于创建 MySQL 表.
创建表前,我们需要使用 use test 来选择要操作的数据库”test”:
我们将创建一个名为 “user” 的表,有 9个列: “id”, “username”, “password”, “email” ,”phone”,”touxiang”,”address”,”sex”,”addtime”:
1 2 3 4 5 6 7 8 9 10 11 12 create table user ( `id` int not null auto_increment, `username` varchar (20 ) not null unique , `password` varchar (36 ) not null , `email` varchar (50 ) not null , `phone` varchar (15 ) not null , `touxiang` varchar (255 ) default './images/default.jpg' , `address` varchar (255 ) not null , `sex` varchar (5 ) not null , `addtime` varchar (100 ) not null , primary key (id) )ENGINE= InnoDB DEFAULT CHARSET= utf8;
在设置了数据类型后,你可以为每个列指定其他选项的属性:
NOT NULL - 每一行都必须含有值(不能为空),null 值是不允许的.
DEFAULT value - 设置默认值
UNSIGNED - 使用无符号数值类型,0 及正数
AUTO INCREMENT - 设置 MySQL 字段的值在新增记录时每次自动增长 1
PRIMARY KEY - 设置数据表中每条记录的唯一标识. 通常列的 PRIMARY KEY 设置为 ID 数值,与 AUTO_INCREMENT 一起使用.
每个表都应该有一个主键(本列为 “id” 列),主键必须包含唯一的值.
下面是两种创建数据库方式:
MySQLi - 面向过程创建数据表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <?php $servername = "localhost" ;$username = "root" ;$password = "root123" ;$dbname = "myDB" ; $conn = mysqli_connect ($servername , $username , $password , $dbname );if (!$conn ) { die ("连接失败: " . mysqli_connect_error ()); } $sql = "create table user( `id` int not null auto_increment, `username` varchar(20) not null unique, `password` varchar(36) not null, `email` varchar(50) not null, `phone` varchar(15) not null, `touxiang` varchar(255) default './images/default.jpg', `address` varchar(255) not null, `sex` varchar(5) not null, `addtime` varchar(100) not null, primary key (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;" ; if (mysqli_query ($conn , $sql )) { echo "数据表 user 创建成功" ; } else { echo "创建数据表错误: " . mysqli_error ($conn ); } mysqli_close ($conn );?>
七、PHP MySQL 插入数据 在创建完数据库和表后,我们可以向表中添加数据.
以下为一些语法规则:
PHP 中 SQL 查询语句必须使用引号
在 SQL 查询语句中的字符串值必须加引号
数值的值不需要引号
NULL 值不需要引号
INSERT INTO 语句通常用于向 MySQL 表添加新的记录:
1 2 INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
本地test数据库已经创建了表 “user”,表字段有: “id”, “username”, “password” ,”email”,”phone”,”touxiang”,”address”,”sex”,”addtime”. 现在,让我们开始向表填充数据.
例子:向 “user” 表添加了新的记录 MySQLi - 面向过程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?php $servername = "localhost" ;$username = "root" ;$password = "root123" ;$dbname = "myDB" ; $conn = mysqli_connect ($servername , $username , $password , $dbname );if (!$conn ) { die ("Connection failed: " . mysqli_connect_error ()); } $sql = "insert into user(username, password,email,phone,address,sex,addtime) values('zhangsan','984556','182@qq.com','16521131154','赛客路100号','nan','2023-1-1');" ; if (mysqli_query ($conn , $sql )) { echo "新记录插入成功" ; } else { echo "Error: " . $sql . "<br>" . mysqli_error ($conn ); } mysqli_close ($conn );?>
八、PHP MySQL Delete
DELETE 语句用于从数据库表中删除行.
删除数据库中的数据 DELETE FROM 语句用于从数据库表中删除记录.
语法 1 2 DELETE FROM table_name WHERE some_column = some_value
如下删除实例
数据库myDB中user表:
下面的实例删除 “user” 表中username=’lisi’ 的记录:
1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $con =mysqli_connect ("127.0.0.1" ,"root" ,"root123" ,"myDB" );if (mysqli_connect_errno ()){ echo "连接失败: " . mysqli_connect_error (); } mysqli_query ($con ,"delete from user where username='lisi' " );mysqli_close ($con );?>
结果:
九、PHP MySQL Update UPDATE 语句用于中修改数据库表中的数据.
更新数据库中的数据 UPDATE 语句用于更新数据库表中已存在的记录.
语法 1 2 3 UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value
如下更改实例,数据库myDB中user表:
这里更改 “user” 表中username=’wangwu’改成’奥特曼’:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <?php $servername = "localhost" ;$username = "root" ;$password = "root123" ;$dbname = "myDB" ;$conn = mysqli_connect ($servername , $username , $password , $dbname );if (!$conn ) { die ("连接失败: " . mysqli_connect_error ()); } $sql = "UPDATE user SET username = '奥特曼' WHERE username='wangwu'" ;if (mysqli_query ($conn , $sql )) { echo "记录更新成功" ; } else { echo "更新失败: " . mysqli_error ($conn ); } mysqli_close ($conn );?>
结果:
十、PHP MySQL 查询数据 语法:select 字段或表达式列表 [from 子句] [where 子句] [order by 子句] [limit 子句];
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1 )字段,自然是来源于"表",则其必然依赖于 from 子句;2 )表达式是类似这样一个内容:8 , 8 + 3 , now(),concat()函数是 mysql 中的系统函数,用于"连接"多个字符串;3 )每个"输出项"(字段或表达式结果),都可以给其设定一个"别名"(字段别名)形式为:字段或表达式 as 别名;设置别名,实际上,表的字段并没有改变,而只是改变了"结果集"的字段名; from 子句表示 select 部分从中"取得"数据的数据源说明: 1 )where 子句就是对 from 子句中的"数据源"中的数据进行筛选的条件设定,筛选的机制是"一行一行进行判断",其作用,几乎就跟各种语言中 if 语句的作用一样. 2 )where 子句依赖于 from 子句;3 )where 子句中,通常都需要使用各种"运算符"; 算术运算符: + - * / % 比较运算符: > >= < <= = (等于) < > (不等于) = = (等于) != (不等于) 逻辑运算符: and or not 4 )对 where 子句的更进一步理解:where true 取出全部记录where false 不取出任何记录它用于将前面"取得"的数据以设定的标准(字段)来进行排序以输出结果. 形式: order by 字段 1 [asc | desc ], 字段 2 [asc | desc ],......说明: 1 )对前面的结果数据以指定的一个或多个字段排序;2 )排序可以指定正序(asc ,默认值)或倒序(desc );3 )多个字段的排序,都是在前一个字段排序基础上,如果还有"相等值",才继续以后续字段排序;含义: 它用于将"前述取得的数据",按指定的行取出来:从第几行开始取出多少行; 形式:limit 起始行号,要取出的行数; 说明: 1. 起始行号都是从 0 开始算起的;2. 起始行号跟数据中的任何一个字段(比如 id)没有关系;3. 要取出的行数也是一个数字,自然应该是大于 0 的;4. 有一个简略形式:limit 行数; 表示直接从第 0 行开始取出指定的行数,它相当于limit 0 , 行数;
下面的实例读取 “user” 表中存储的所有数据,并根据 “username” 列对结果进行排序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?php $con =mysqli_connect ("127.0.0.1" ,"root" ,"root123" ,"myDB" );if (mysqli_connect_errno ()){ echo "连接失败: " . mysqli_connect_error (); } $result = mysqli_query ($con ,"select * from user order by username" );while ($row = mysqli_fetch_array ($result )){ echo $row ['username' ]; echo " 密码:" . $row ['password' ]; echo " 邮箱:" . $row ['email' ]; echo " 手机号:" . $row ['phone' ]; echo " 性别:" . $row ['sex' ]; echo "<br>" ; } mysqli_close ($con );?>
结果显示: