最近做的项目后端要自己写,总结一下数据库基本的连接、增删查改等语句以及相应功能利用PHP实现。
连接/关闭 MySQL主机
连接
mysql_connect()
函数打开非持久的 MySQL 连接,它最常用到的三个参数是MySQL主机名称、用户名、密码。
1 | // php |
删除
1 | // 关闭mysql连接 |
执行MySQL语句
mysql_query(query,connection)
函数执行一条 MySQL 查询,如果查询执行不正确则返回 FALSE。
query
MySQL语句connection
主机连接,如果未规定,则使用上一个打开的连接。
新建/删除 数据库
新建
MySQL语句:CREATE DATABASE my_db
;
1 | // 定义sql语句 |
删除
MySQL语句:DROP DATABASE my_db
;
1 | $sql = "DROP DATABASE my_db"; |
新建/删除 数据表
新建
1 | CREATE TABLE table_name (column_name column_type); |
column_name
为列名,即字段名column_type
为该字段属性
phpMyAdmin:
1 | $sql = "CREATE TABLE `machine_data`.`00000003` ( |
删除
1 | DROP TABLE table_name ; |
向表中插入数据(增)INSERT
1 | INSERT INTO table_name ( field1, field2,...fieldN ) |
例如用户注册功能:
1 | // POST接收(默认已运行addslashes()转义字符) |
删 DELETE
1 | DELETE FROM table_name [WHERE Clause] |
ps: 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
例如删除用户名为simmzl
的用户:
1 | $sql = " DELETE FROM user WHERE username = simmzl "; |
查 SELECT
SELECT
1 | SELECT column_name,column_name... FROM table_name |
- 也可以使用
*
代替column_name
,表示查询所有。 LIMIT
设定返回的记录数OFFSET
设定开始查询的数据偏移量。默认情况下偏移量为0。
例如查询用户名为simmzl
的用户信息:
1 | // 数据库输出编码 |
ORDER BY 排序
1 | ORDER BY field1, [field2...] [ASC [DESC]] |
ASC
升序DESC
降序
例如将所有用户信息输出并按照username
升序排序:
1 | $sql = "SELECT * FROM user ORDER BY username ASC"; |
mysql_fetch_array()
mysql_query()
仅对 SELECT
语句返回一个资源标识符,因此还需要使用mysql_fetch_array(data,array_type)
将取得的数据转成数组。
array_type
有三个值:
MYSQL_ASSOC
- 关联数组,如: [username] => simmzlMYSQL_NUM
- 数字数组,如:[0] => simmzlMYSQL_BOTH
- 默认。同时产生关联和数字数组
因此,在执行$result = mysql_query($sql, $con)
后,还需执行
1 | // 转成关联数组 |
1 | Array |
在当mysql_query()
查询结果有多行时,依次调用mysql_fetch_array()
将返回结果集中的下一行,如果没有更多行则返回 FALSE。
因此使用while循环取出所有行数据:
1 | while($tmp[] = mysql_fetch_array($result,MYSQL_ASSOC)){}; |
json_encode()
将数组转成前端想要的JSON格式
1 | echo json_encode($res); |
1 | [ |
json_decode()
相反,将JSON转成数组。
改 UPDATE
1 | UPDATE table_name SET field1=new-value1, field2=new-value2 |
例如修改simmzl
的密码和邮箱:
1 | $sql = "UPDATE user SET pwd = xxxx, email = [email protected] WHERE username = simmzl"; |