学习指南:
- 先学习数据库连接的操作,后面操作都需要数据库连接,在连接的基础上执行后续代码。
- 本文仅列出代码不同之处,各位朋友可按照顺序的方式,在自己的代码上进行修改。
- 例如:从单条命令到多条命令,仅修改一小部分代码即可。
以下代码运行均需将
主机名:127.0.0.1 用户名: root 密码:1234
替换为你本机的。替换后代码可直接运行,但三种方式要分开复制到自己代码中运行。
数据库连接
//面向对象
$con = new mysqli("127.0.0.1","root","1234");
if($con->connect_error){
die("连接失败:".$con->connect_error);
}
echo "连接成功";
//面向过程
$con = mysqli_connect("127.0.0.1","root","1234");
if(!$con){
die("连接失败:".mysqli_connect_error());
}
echo "连接成功";
//PDO
$con = new PDO("mysql:host=127.0.0.1;","root","1234");
echo "连接成功";
对象和过程的区别
对象是new一个对象$con,用对象->一些函数
$con->connect_error; 连接错误信息(属性)
过程是用mysqli函数
mysqli_connect(); 连接数据库
mysqli_connect_error(); 连接错误信息
创建数据库
//面向对象
$con = new mysqli("127.0.0.1","root","1234");
if($con->connect_error){
die("连接失败:".$con->connect_error);
}
echo "连接成功";
$sql = "create database myDB";
if($con->query($sql) === TRUE){
echo "数据库创建成功";
}else{
echo "ERROR:".$con->error;
}
$con->close();
//面向过程
$con = mysqli_connect("127.0.0.1","root","1234");
if(!$con){
die("连接失败:".mysqli_connect_error());
}
echo "连接成功<br>";
$sql = "create database myDB";
if(mysqli_query($con,$sql)){
echo "数据库创建成功";
}else{
echo "ERROR:".mysqli_error($con);
}
mysqli_close($con);
//PDO
try{
$con = new PDO("mysql:host=127.0.0.1;","root","1234");
echo "连接成功<br>";
$con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql = "create database myDB";
$con->exec($sql);
echo "数据库创建成功";
}catch(PDOException $e){
echo $sql."<br>".$e->getMessage();
}
总体来说,对象比过程少一个参数。
PDO是面向对象的
$con = new PDO(); 与mysqli相比,要声明mysql类型
$con ->
setAttribute(); 设置错误信息,采用try...catch的模式来捕捉错误信息
exec($sql); 执行语句
注意:运行一次后,数据库已经创建,再次运行时会出现数据库已经创建的提示。如需再次运行,可删除数据库后再操作
数据表的操作——单条命令
数据表操作:创建数据表、插入数据。
数据表的操作的总体逻辑和创建数据库相同,只不过数据表的操作存在于数据库中,所以在连接时要指定数据库。
$con = new mysqli("127.0.0.1","root","1234","myDB"); #面向对象mysqli
$con = mysqli_connect("127.0.0.1","root","1234"."myDB"); #面向过程mysqli
$con = new PDO("mysql:host=127.0.0.1;dbname=myDB","root","1234"); #PDO
只需将$sql变量内容换成相应的命令,其余无须改变。这里不再赘述。
数据表操作——多条命令
与单条命令不同之处仅有两条
- $sql的内容,单条是单条的,多条是用分号隔开的多个单条
- 单条命令用query,多条命令用multi_query
//这里用mysqli(面向对象),做一个例子(没有写数据库连接等,仅写与单条命令不同的代码部分)
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Mary', 'Moe', 'mary@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Julie', 'Dooley', 'julie@example.com')";
if($con->multi_query($sql) === TRUE){
echo "多条记录插入成功";
}else{
echo "ERROR:".$con->error;
}
$con->close();
PDO可以用beginTransaction();开启事务,commit();提交事务。
至此,PHP操作数据库的逻辑已讲述完毕,更多操作或命令可搜索数据库的API进行。