PHP三种连接数据库方法的比较

学习指南:

  • 先学习数据库连接的操作,后面操作都需要数据库连接,在连接的基础上执行后续代码。
  • 本文仅列出代码不同之处,各位朋友可按照顺序的方式,在自己的代码上进行修改。
  • 例如:从单条命令到多条命令,仅修改一小部分代码即可。

以下代码运行均需将

主机名: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变量内容换成相应的命令,其余无须改变。这里不再赘述。

数据表操作——多条命令

与单条命令不同之处仅有两条

  1. $sql的内容,单条是单条的,多条是用分号隔开的多个单条
  2. 单条命令用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进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值