Mysqli面向过程连接
Myslqi扩展
连接数据库模板
<?php
/* Connect to a MySQL server 连接数据库服务器 */
$link = mysqli_connect(
'localhost', /* The host to connect to 连接MySQL地址 */
'jian', /* The user to connect as 连接MySQL用户名 */
'123456', /* The password to use 连接MySQL密码 */
'jian'); /* The default database to query 连接数据库名称*/
)
if (!$link) {
printf("Can't connect to MySQL Server. Errorcode: %s ", mysqli_connect_error());
exit;
}else
echo '数据库连接上了!';
/* Close the connection 关闭连接*/
mysqli_close($link);
?>
数据库连接的天龙八步:
1、连接数据库
连接:mysqli_connect
2、成功与否判断
连接错误号:mysqli_connect_errno
连接错误信息:mysqli_connect_error
3、选择数据库
选择库:mysqli_select_db
执行错误号:mysqli_errno
执行错误信息:mysqli_error
4、设置字符集
mysqli_set_charset
5、准备SQL语句
说明:符合SQL语法的任意语句
6、执行SQL语句
执行:mysqli_query
7、处理数据
查询时返回查询到数据行数:mysqli_num_rows
数据操作是影响的行数:mysqli_affected_rows
mysqli_fetch_row:获取一条数据的索引数组
mysqli_fetch_assoc:获取一条数据的关联数组
mysqli_fetch_array:获取一条数据的指定数组,
mysqli_fetch_all:获取结果集中的所有数据,
类型取决于第二个参数
第二个参数:MYSQLI_NUM(索引数组)
MYSQLI_ASSOC(关联数组)
MYSQLI_BOTH(索引和关联都有)
8、释放资源、关闭连接
释放资源:mysqli_free_result
关闭连接:mysqli_close
示例:
// 1、连接数据库
$link = @mysqli_connect('localhost','root','123456');
// 2、成功与否判断
if (!$link) {
exit('error('.mysqli_connect_errno().'):'.mysqli_connect_error());
//die 该函数是 exit() 函数的别名。
}
// 3、选择数据库
if (!mysqli_select_db($link,'test')) {
echo 'error('.mysqli_errno($link).'):'.mysqli_error($link);
mysqli_close($link);
die;
}
// 4、设置字符集
mysqli_set_charset($link,'utf8');
设置从数据库服务器发送数据到数据库服务器时使用的默认字符集。
// 5、准备SQL语句
$sql = 'select * from star where id > 100';
// 6、执行SQL语句
$result = mysqli_query($link,$sql);
if ($result && mysqli_num_rows($result)) {
// 7、处理数据
/
mysqli_fetch_row:获取一条数据的索引数组
mysqli_fetch_assoc:获取一条数据的关联数组
mysqli_fetch_array:获取一条数据的指定数组,
类型取决于第二个参数
mysqli_fetch_all:获取结果集中的所有数据,
类型取决于第二个参数
第二个参数:MYSQLI_NUM(索引数组)
MYSQLI_ASSOC(关联数组)
MYSQLI_BOTH(索引和关联都有)
var_dump(mysqli_fetch_all($result,MYSQLI_ASSOC));
/
while ($row = mysqli_fetch_array($result,MYSQLI_NUM)) {
var_dump($row);
}
} else {
}
// 8、释放资源、关闭连接
mysqli_free_result($result);
mysqli_close($link);
具体实现
//连接数据库操作
//连接数据库,并通过$link保存链接
$link = mysqli_connect('localhost','root','','project5');
Mysqli_connect(主机名/IP,用户名,密码,数据库名,端口号,socket通信);
Mysqli_connect 函数有六个参数,当省略参数时自动使用php.ini中配置的默认值
当数据库连接失败时,mysqli_connect提示的错误信息并不友好。可以通过下面的方式解决
$link = @mysqli_connect('localhost','root','','project5') or exit('数据库连接失败');
@用于屏蔽错误信息,or是比较运算符,只有当左边表达式为false时才会执行右边的表达式,‘exit’用于停止脚本,同时可以输出错误信息。
当需要详细信息时,可以通过mysqli_connect_error()函数获取。
下面我用两种方式打印保存的连接$link
echo "<pre>";
print_r($link);
var_dump($link);
在使用命令行工具操作数据库时,需要使用SET NAMES 设置字符集
在PHP中也需要设置字符集
mysqli_set_charset() 函数规定当与数据库服务器进行数据传送时要使用的默认字符集。
mysqli_set_charset($link,'utf8'); //成功返回true失败返回false
只有保持PHP脚本文件、web服务器返回的编码、网页的<meta>标记、PHP访问Mysql使用的字符集集多统一时才能避免中文乱码问题。
https://www.jb51.net/article/22501.htm(具体文档)
php页面为utf编码
header("Content-type: text/html;
charset=utf-8");
<meta charset="UTF-8">//网页为uft8编码
设置查询的数据为utf8字符集(set names utf8同时设置客户端字符集,连接层字符集和查询结果(如结果集或错误消息)返回给客户端的字符集)
mysqli_query($link,"set names utf8");//PHP访问Mysql使用的字符集
mysqli_query() 函数执行某个针对数据库的查询
mysqli_set_charset和SET NAMES优劣分析(mysqli_set_charset除了做了”SET NAMES”以外, 还多做了一步)所有最好用mysqli_set_charset(详情请看下面链接的文章http://www.laruence.com/2010/04/12/1396.html).
https://blog.csdn.net/zhangfeng1133/article/details/46777883
$link = @mysqli_connect('localhost','root','','project5') or exit('数据库连接失败'); //数据库连接结果
mysqli_set_charset($link,'utf8'); //成功返回true失败返回false
mysqli_query($link,'use news'); //选择数据库(SQL语句方式)
mysqli_query($link,'set names utf8'); //设置字符集(SQL语句方式)
//执行SQL语句,并获取结果集
$result = myslqi_query($link,'show databases');
if(!$result){
exit('执行失败。错误信息:'.mysqli_error($link));
}
echo "<pre>";
print_r($result);
var_dump($result);
//处理结果集$result
mysql_num_rows($result) 从结果集中获取数据记录的个数
mysql_num_fields($result) 从结果集中获取数据记录列的个数
mysql_fetch_row() 该函数将一条结果记录返回,并以一个普通索引数组的形式保存
mysql_fetch_assoc() 该函数将一条结果记录返回,并以一个普通关联数组形式保存
mysql_fetch_array() 默认同时以索引数组和关联数组保存,三个参数MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH
mysql_fetch_object() 以一个对象的形式返回一条结果记录,他的各个字段需要以对象的形式进行访问
var_dump(mysqli_num_rows($result));(从结果集中获取数据记录的个数;结果如下)
H:\wamp\www\test\test.php:48:int 6
var_dump(mysqli_fetch_all($result)); //获取所有结果,并以数组方式返回
print_r(mysqli_fetch_all($result)); //这种方式看的比较直观
总结:
var_dump(mysqli_fetch_array($result));
var_dump(mysqli_fetch_assoc($result));
var_dump(mysqli_fetch_row($result));
从结果集中获取数据记录的个数