三种方式
mysql扩展
mysqli扩展
pdo_mysql扩展
查询本地环境安装了那些扩展
php -m
mysql扩展连接数据库方法
<?php
//利用mysql扩展库连接数据库
//获取链接
$conn=mysql_connect("localhost","root","955219");
if(!$conn)
{
//显示错误信息
die("连接数据库失败".mysql_error());
}
else
{
echo "成功<br/>";
}
//选择数据库
mysql_select_db("practice");
//设置字符集
mysql_query("set name utf8");
//发送sql语句
$sql="select * from user";
$res=mysql_query($sql,$conn);
//接收结果并处理
var_dump($res);
// mysql_free_result($res);
mysql_close($conn);
while($row=mysql_fetch_row($res))
{
echo "<br/>";
var_dump($row);
echo "<br/>";
// echo "$row[0]------$row[1]------$row[2]";
foreach ($row as $key=>$val)
{
echo "------$val";
}
}
//释放链接,关闭资源
//释放结果集
mysql_free_result($res);
//关闭连接(这句话可以没有,没有什么用,写这句话之后链接也不是马上关闭的)
//mysql_close($conn);
?>
mysqli扩展连接数据库方法
连接数据库服务器
1)资源 mysqli_connect(服务器地址,用户名,密码)
![](http://upload-images.jianshu.io/upload_images/6878902-0cbac2f75927074b.png?imageMogr2/auto-orient/strip|imageView2/2/w/501/format/webp)
补充:mysqli_connect默认对一个服务器只连接一次
设置连接编码
1)形式1:mysqli_query($link,''set names xxx'')
mysqli_query(connection,query,resultmode);
![](http://upload-images.jianshu.io/upload_images/6878902-ab0cd69e048cfa59.png?imageMogr2/auto-orient/strip|imageView2/2/w/391/format/webp)
2) 形式2:mysqli_set_charset($link,"utf8");
![](http://upload-images.jianshu.io/upload_images/6878902-8eb7602322e9e07b.png?imageMogr2/auto-orient/strip|imageView2/2/w/374/format/webp)
3)怎么确定用哪种?
客户端当前执行脚本的界面是什么字符集,就设定成什么字符集
选定要使用的数据库
1)多用)形式1:mysqli_query($link,''xxxxx'')
![](http://upload-images.jianshu.io/upload_images/6878902-bc4e59dc153a49d6.png?imageMogr2/auto-orient/strip|imageView2/2/w/358/format/webp)
2)形式2:mysqli_select_db($link,''xxxx'')
关闭连接
主动释放链接:MySQL服务器的链接资源是有限的,不用了需要释放(脚本执行结束系统也会自动释放)
1)mysqli_close($link)
![](http://upload-images.jianshu.io/upload_images/6878902-a9bb67cf826cbfeb.png?imageMogr2/auto-orient/strip|imageView2/2/w/289/format/webp)
执行增删改操作
mysqli_query函数返回true或者false,原因有二:1sql指令本身错误,2执行失败
![](http://upload-images.jianshu.io/upload_images/6878902-14cfea19ac78ecb3.png?imageMogr2/auto-orient/strip|imageView2/2/w/589/format/webp)
做个专门负责数据库初始化的脚本:之后要操作数据库包含该脚本即可
![](http://upload-images.jianshu.io/upload_images/6878902-12035da2c619bb51.png?imageMogr2/auto-orient/strip|imageView2/2/w/739/format/webp)
1,2,3)mysqli_query($link,''inset /delect/update.......'');
![](http://upload-images.jianshu.io/upload_images/6878902-49780d2f5b9fd88a.png?imageMogr2/auto-orient/strip|imageView2/2/w/921/format/webp)
![](http://upload-images.jianshu.io/upload_images/6878902-8f139f800d135771.png?imageMogr2/auto-orient/strip|imageView2/2/w/692/format/webp)
执行查询操作
成功返回结果集:sql指令没有错误,但如果查询结果本身为空返回也是true;失败为false:sql指令有错误
![](http://upload-images.jianshu.io/upload_images/6878902-69f092423ac9d9a1.png?imageMogr2/auto-orient/strip|imageView2/2/w/1107/format/webp)
![](http://upload-images.jianshu.io/upload_images/6878902-03f0e0273e8418fe.png?imageMogr2/auto-orient/strip|imageView2/2/w/902/format/webp)
获得结果集行数
1)mysqli_num_rows()
![](http://upload-images.jianshu.io/upload_images/6878902-34cd526e333d2292.png?imageMogr2/auto-orient/strip|imageView2/2/w/576/format/webp)
解析结果集
1)mysqli_fetch_assoc():获取关联数组,表的表单名字作为数组下标,元素值作为数组元素值
![](http://upload-images.jianshu.io/upload_images/6878902-80f1a8c4ab2996aa.png?imageMogr2/auto-orient/strip|imageView2/2/w/651/format/webp)
2)mysqli_fetch_row():获取索引数组,只获取数绝对值,数组下标从0开始
![](http://upload-images.jianshu.io/upload_images/6878902-ae8577620691c617.png?imageMogr2/auto-orient/strip|imageView2/2/w/680/format/webp)
3)mysqli_fetch_array():获取关联或者索引数组,一个记录取两次,一组是关联数字,一组是索引数组,但是可以通过第二个参数决定获取方式;
MYSQLI_ASSOC:只获取关联数组
MYSQLI_NUM:只获取索引数组
MYSQLI_BOTH:获取全部
![](http://upload-images.jianshu.io/upload_images/6878902-d410d336b4f67c11.png?imageMogr2/auto-orient/strip|imageView2/2/w/793/format/webp)
结果集通常操作:获取所有
pdo连接mysql
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>