最近打算系统的学习一下php,以前看过,但是并没深入的了解。接下来我就总结一下php中 对mysql数据库的一些增删改查操作。我这里主要讲的是面向过程的操作方法
一、链接数据库
1.php中链接数据库还是比较简单的。直接使用 mysql_connect()
函数 (打开非持久的 MySQL 连接);
语法: mysql_connect(servername,username,passward) 这里是部分参数
servername: 可选。规定要连接的服务器。默认是 “localhost:3306”。
username: 可选。规定登录所使用的用户名。默认值是拥有服务器进程的用户的名称。
password: 可选。规定登录所用的密码。默认是 “”。
mysql_connect() 函数具有返回值,但数据库链接不成功时,返回false;
当我们连接成功后,执行完代码时,数据库会自动关闭链接。如果你想提前关闭连接可以使用 mysql_close()
函数
例如:
<?php
$servername = "localhost";
$username = "root";
$password = "root";
// 连接服务器
$con = mysql_connect($servername, $username, $password);
if(!$con){
die('could not connect mysql'. mysql_error())
}else{
echo "链接数据库成功";
}
?>
操作我们的数据库和表用:
mysql_query();
2.mysql_connect()函数是打开非持久的 MySQL 连接,如果你想打开持久的连接请使用 mysql_pconnect() 函数,它具有一下特点
①当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
②当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。
二、创建数据库和表
1.创建数据库
语法: "CREATE DATABASE 数据库名";
例如:(还是上面的代码)
mysql_query("CREATE DATABASE test",$con); //创建名为的数据库
如果创建失败,会返回false;
有时候我们需要指定数据库的编码格式:
mysql_query("set names 'utf8'");
连接数据库:
mysql_select_db("test", $con); //连接名为test的数据库
·
2.创建数据表
语法:
CREATE TABLE 表名
(
字段名 varchar(15),//后面跟的是数据类型
字段名 varchar(15),
字段名 int
)";
例如想表中添加数据:
mysql_select_db("test", $con); // 打开数据库
// 创建名为Persons的表
$sql = "CREATE TABLE Persons
(
personID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(personID), // 主键
FirstName varchar(15),
LastName varchar(15),
Age int
)";
// 向数据库中添加表
mysql_query($sql,$con);
重点内容
每一个表都应该有一个主键字段。主键用来对表中的行进行唯一的标识,并且每个主键值在表中必须是唯一的。
主键字段不能为空,这是由于数据库引擎需要一个值来对记录进行定位。
上面的例子把 personID 字段设置为主键字段。主键字段通常是 ID 号,且通常使用 AUTO_INCREMENT 设置。AUTO_INCREMENT 会在新记录被添加时逐一增加该字段的值。要确保主键字段不为空,我们必须向该字段添加 NOT NULL 设置。
三、向表中插入数据
语法:
INSERT INTO table_name(column1,column2,....)
VALUES (value1, value2,....)
这里注意column1 与column2 不要加引号
实例
header("Content-type:text/html;charset=utf-8");
$server = 'localhost';
$username = 'root';
$password = 'root';
$con = mysql_connect($server,$username,$password);
mysql_select_db('test',$con);
$table = "INSERT INTO Persons (userName,Sex,Age)
VALUES ('老牛','男','55')";
mysql_query($table);
四、查询数据
1.我们用SELECT 去选取数据
语法:SELECT column_name(s) FROM table_name
① 如果选取所有数据我们 将column_name(s)
写成 *
② 在向数据库查询,或命令时,我们必须使用mysql_query()
函数
③ 这里我们将查询到的结果利用函数 mysql_fetch_array()
将其转化为数组形式,它有一个指针,每次调用指向下一位,直到结束。
假如我们的数据库是这样子
我们获取所有数据:
$result = mysql_query("SELECT * FROM Persons");
while($res = mysql_fetch_array($result)){
echo $res['userName']." ".$res['Sex']." ".$res['Age'];
echo '<br/>';
}
我们过去age 列的数据
只需改变$result
$result = mysql_query("SELECT Age FROM Persons");
2.加条件查询 WHERE
语法:
SELECT column FROM table
WHERE column operator value
例如我们只选名字为 老李的数据:
$result = mysql_query("SELECT * FROM Persons WHERE userName='老李'");
while($res = mysql_fetch_array($result)){
echo $res['userName']." ".$res['Sex']." ".$res['Age'];
echo '<br/>';
3.查询排序 ORDER BY
语法:
SELECT column_name(s)
FROM table_name
ORDER BY column_name
例如,选取所有数据,并根据age 进行排序:
$result = mysql_query("SELECT Age FROM Persons ORDER BY Age");
while($res = mysql_fetch_array($result)){
echo $res['Age'];
echo '<br/>';
}
重点内容
① ORDER BY 排序方法,默认是升序(1 在 9 之间,”a” 在 “p” 之间);
② 如果想降序使用DESC
例如:
$result = mysql_query("SELECT Age FROM Persons ORDER BY Age DESC");
while($res = mysql_fetch_array($result)){
echo $res['Age'];
echo '<br/>';
}
③ 我们还可以针对多个列进行排序,当按照多个列进行排序时,只有第一列相同时才使用第二列
语法:
SELECT column_name(s)
FROM table_name
ORDER BY column_name1, column_name2
五、修改数据
语法:
UPDATE table_name
SET column_name = new_value
WHERE column_name = some_value
例如我们修改叫老王的性别都为女:
mysql_query("UPDATE Persons SET Sex='女'
WHERE userName='老王'");
还可以在指定跟多条件:
mysql_query("UPDATE Persons SET Sex='女'
WHERE userName='老王' AND Age='23'");
五、删除数据
语法:
DELETE FROM table_name
WHERE column_name = some_value
很简单,这里直接上例子:
mysql_query("DELETE FROM Persons
WHERE userName = '老王'");
另外对于数据库的增删改查,我们有时候为了提高工作效率,也会用到可视化软件,这里我只推荐一个 HeidiSQL ,想这类软件网上很多,你可以挑选适合自己的。