一.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));
领取专属 10元无门槛券
私享最新 技术干货