-
1、php数据库编程
三种方式操作mysql数据库:
1、mysql扩展库
2、mysqli 扩展库
3、pdo
-
2、mysql扩展库和mysql数据库的区别。
2.1 扩展库是php里面的一些函数,方便程序员操作mysql数据库。mysql是用于存放数据的,主要的是数据表。(还有其他的数据对象) 2.2 数据库的三层结构:php程序==》dnms==>数据库
-
3、 使用php的mysql扩展库对mysql操作的案例。
3.1 启用mysql扩展库
在php.ini文件中配置,extension=hph_mysql.dll
<?php
// 1、获取链接
$conn = mysql_connect("127.0.0.1","root","root");
if (!$conn) {
die("链接失败".mysql_error());
}
// 2、选择数据库
mysql_select_db("test");
// 3、设置操作编码(可以有)
mysql_query("set names utf8");
// 4、发送指令
$sql = "select *from user";
$res = mysql_query($sql,$conn);
var_dump($res);
// 5、接受返回的结果、并处理
while ($row=mysql_fetch_row($res)) {
# code...
foreach ($row as $key => $value) {
echo "---$value";
}
}
// 6、释放资源,关闭链接
mysql_free_result($res);
mysql_close($conn);// 可以有
?>
<!-- 1.使用完$res要自动释放资源
2.取到资源后,关闭链接没有影响。
3.mysql_fetch_row函数,先自增,在去数据(也就是去下一行的数 据)
-->
<!--
四种取资源的函数:
1、mysql_fetch_row 返回索引数组 整行数据取出
2、mysql_fetch_assoc 返回关联数组(字段作为key)
3、mysql_fetch_array 返回索引数组和关联数组(两个)
4、mysql_fetch_object 返回对象
-->
-
4.mysqli的使用(面向对象)
<?php
// 1.创建mysqli对象
$mysqli = new MySQLi("localhost","root","root","test");
//验证是否连接
if($mysqli->connect_error){
die("链接失败".$mysqli->connect_error);
}
// 2.操作数据库
$sql = "select *from user1";
//返回结果
$res = $mysqli->query($sql);
//3.处理结果
while($row=$res->fetch_row()){
foreach($row as $key=>$val){
ech "$val--";
}
// 4.关闭资源
$res->free(); // 释放内存
$mysqli->close();//关闭链接
?>
-
5.mysqli的使用(面向过程)省略
注意事项:如果操作的字段类型是String类型,则要求我们要用单引号括起来,如果操作字段是值类型,则不要求用单引号。
-
6.再封装一层
<?php
class SqlHelper{
private $mysqli;
private static $host="";
private static $user="";
private static $pwd="";
private static $db="";
public function __construct(){
&this->mysqli=new MySQLi(self::$host,self::$user,self::$pwd,self::$db);
if($this->mysqli->connect_error){
die("错误".$this->mysqli->connect_error);
$this->mysqli->query("set names utf8");
}
}
public function execute_dql($sql) {
$res=$this->mysqli->query($sql) or die("操作dql").$this->mysql->error);
return $res;
}
public function execute_dml($sql) {
$res=$this->mysqli->query($sql) or die("操作dql").$this->mysql->error);
if (!$res) {
return 0;//表示失败
} else {
if($this->mysqli->affected_rows>0){
return 1;//表示成功
}else {
return 2;// 表示没有行受到影响
}
}
}
}
?>