php的几种方式操作mysql数据库,mysql,mysqli,pdo随你挑

一.mysql(php5平台支持mysql连接库(函数库,就是一个扩展dll文件),提供多个函数对mysql进行操作)

(1).连接数据库,返回数据库的连接标识符($connID)

mysql_connect($host,$user,$pwd)

(2).选择数据库名称

mysql_select_db($dbname);

(3).设置数据库与其连接的字符集(可以与上一个一起)

mysql_query('set names utf8');

(4).构造sql语句($sql_str="")并执行,返回资源标识符($result)(如果是inset,update,delete就结束了,成功true,失败false)

mysql_query($sql_str);

(5).通过sql执行后的资源标识符获取结果集

1.mysql_fetch_array($result,MYSQL_ASSOC);// 查询到数据库里的一条关联数组数据

(6).处理数据结果集(若查询多条数据,可循环处理)

$temp_array = array();

while($row=@mysql_fetch_array($result,MYSQL_ASSOC)) {

$temp_array[] = $row;

}

return $temp_array;// mysql_fetch_array() 获取资源是下一个下一个找,直到没有下一个了就返回false.

(7).关闭与数据库的连接

mysql_close($connID); // 传入连接标识符

☆主要步骤:连接数据库->选择库名->执行sql->根据执行结果获取数据(单条)

其他函数(mysql连接库):

1.以资源标识符(执行sql语句返回的)为参数

(1).mysql_num_rows($result):返回记录行的个数

(2).mysql_num_fields($result):返回一行的字段个数(列的个数)

(2).mysql_fetch_array($reslt,$type):从结果集中可以返回一行(关联,数字,二者一起)的数组保存[根据第二个参数而定]

(3).mysql_fetch_row($result):该函数从结果集中返回一条数字数组保存

(4).mysql_fetch_assoc($result):该函数从结果集中返回一条关联数组保存

(5).mysql_fetch_object($result):从结果集中取得一行作为对象,各个字段以对象方式访问。

(6).mysql_free_result($result):释放结果集内存

2.以连接标识符为参数的函数(也可不传)

(1).mysql_affected_rows($connID):返回上一次执行sql后受影响的记录行数

(2).mysql_insert_id($connID):返回上一次执行insert查询最后一行的主键id编号

(3).mysql_error($connID):返回上一次连接数据库,执行sql等等产生的错误信息串

二、mysqli是php为了更好了兼容新版本的mysql而推出了相当于mysql提升版的扩展,并且提供两种方式来操作数据库

1.过程式:与上面几乎没有变化,只是比如mysql_connect换成mysqli_connect();

//1、建立数据库连接 第四个参数是数据库名,可以后面不用选择了

$link=mysqli_connect('localhost','root','root','test') ;

if(mysqli_connect_errno()){

die('Connection Error:'.mysqli_connect_errno());

}

//2、设置字符集

mysqli_set_charset($link,'utf8');

//3、执行Sql语句

if ($result = mysqli_query($link, 'SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5')) {

//4、处理结果集

$temp_array = array();

while($row = mysqli_fetch_assoc($result)){

$temp_array[] = $row;

}

return $temp_array;

/* 结束查询释放内存 */

mysqli_free_result($result);

}

//4、关闭数据库连接、释放资源

mysql_close($link);

2.面向对象式

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "myDB";

// 创建连接

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection

if ($conn->connect_error) {

die("连接失败: " . $conn->connect_error);

}

$sql = "SELECT id, firstname, lastname FROM MyGuests";

$result = $conn->query($sql);

if ($result->num_rows > 0) {

// 输出数据

while($row = $result->fetch_assoc()) {

echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "

";

}

} else {

echo "0 结果";

}

$conn->close();

三、PDO:是php5+的一个用来连接数据库的抽象层,通过打开php 的pdo扩展,采用面向对象的方式使用

1.new PDO("mysql:host=localhost;dbname=db_demo","root","");

默认不是长连接,若要使用数据库长连接,需要在最后加如下参数:

new PDO("mysql:host=localhost;dbname=db_demo","root","","array(PDO::ATTR_PERSISTENT => true) ");

2.PDO常用方法及其应用

PDO::query() 主要是用于有记录结果返回的操作,特别是SELECT操作

PDO::exec() 主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作

PDO::lastInsertId() 返回上次插入操作,主键列类型是自增的最后的自增ID

PDOStatement::fetch() 是用来获取一条记录

PDOStatement::fetchAll() 是获取所有记录集到一个中

3.实例

$dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', 'pwd');

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbh->exec('set names utf8');

/*添加*/

$sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)";

$stmt = $dbh->prepare($sql); // 准备查询

$stmt->execute(array(':login'=>'kevin2',':password'=>'')); // 执行查询语句

echo $dbh->lastinsertid();

/*修改*/

$sql = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId";

$stmt = $dbh->prepare($sql);

$stmt->execute(array(':userId'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9'));

echo $stmt->rowCount();

/*删除*/

$sql = "DELETE FROM `user` WHERE `login` LIKE 'kevin_'"; //kevin%

$stmt = $dbh->prepare($sql);

$stmt->execute();

echo $stmt->rowCount();

/*查询*/

$login = 'kevin%';

$sql = "SELECT * FROM `user` WHERE `login` LIKE :login";

$stmt = $dbh->prepare($sql);

$stmt->execute(array(':login'=>$login)); // 执行查询语句并返回结果集

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

print_r($row);

}

print_r( $stmt->fetchAll(PDO::FETCH_ASSOC));

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180322G1PMJX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券