mysqli编程入门

写在最前面:这篇文章只整理mysqli编程最基础、最实用的代码片段,不完整整理mysqli的所有功能函数。

一 . 为什么用mysqli作为php使用MySQL的API

MySQL官方文档上面是这么说的:

    php提供三种不同的API接口

    1.original mysql API:支持PHP4和5,它支持MYSQL4.1.3之前的版本,使用时需要注意配置MYSQL server的认证相关项,4.1.3之后的版本也可以用,但是server的一些功能可能不能用;
    2.mysql improved extension:这个扩展支持PHP5.0以上,使用MYSQL4.1.1以后的版本。
    3.mysql function(PDO_MYSQL):不是它自己的API,是PDO function 的一部分,并为MYSQL特别做的接口;

官网文档推荐使用mysqli或者PDO_MYSQL

安装mysqli扩展的方法网上文章一大堆,而且安装方法有多种,这里不再一一列举(其实我只懂其中一二种,这不是我的重点)。

下面说说怎么检测mysqli扩展是否已经安装

这些函数都可以用来检测:

var_dump(extension_loaded('mysqli'));
function_exists('mysqli_connect');
get_loaded_extensions();

二 . mysqli连接数据库

最简单实用的代码如下:

$mysqli = new mysqli('url','mysql_username','mysql_password','database_name');
if($mysqli->connect_errno){
    echo "Connect error : " . $mysqli->connect_error;
}
$mysqli->set_charset("utf8");
//使用结束
$mysqli->close();

上面返回的$mysqli对象,其中包含了很多属性,如果没有错误,用print_r()打印出来是这样的:

mysqli Object
(
    [affected_rows] => 0
    [client_info] => 5.5.46
    [client_version] => 50546
    [connect_errno] => 0
    [connect_error] => 
    [errno] => 0
    [error] => 
    [error_list] => Array
        (
        )

    [field_count] => 0
    [host_info] => Localhost via UNIX socket
    [info] => 
    [insert_id] => 0
    [server_info] => 5.5.44-0+deb7u1
    [server_version] => 50544
    [stat] => Uptime: 191693  Threads: 1  Questions: 188  Slow queries: 0  Opens: 53  Flush tables: 1  Open tables: 46  Queries per second avg: 0.000
    [sqlstate] => 00000
    [protocol_version] => 10
    [thread_id] => 56
    [warning_count] => 0
)

$mysqli对象的方法(更详细内容后续加载):

echo $mysqli->get_client_info();

三 . 使用mysqli执行SQL语句(总原则)

把握这一个原则:

mysqli执行SQL语句的返回结果有两种:
1.当SELECT/DESC/DESCRIBE/SHOW/EXPLAIN执行成功,则返回mysqli_result对象,失败则返回false。
2.对于其他SQL语句的执行,则返回true or false.
注:不包括预处理语句

mysqli_result对象用print_r()打印出来是这样:

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 4
    [lengths] => 
    [num_rows] => 1
    [type] => 0
)

把握这第二个原则:

    $mysqli->errno 和 $mysqli->error 是执行SQL语句产的错误编号和错误信息,每次执行完SQL语句后可以使用这两个参数查看是否出错。
    $mysqli->insert_id 和 $mysqli->affected_rows 这两个后续再加上详细。

四 . 使用mysqli执行SQL查询语句

分为两种情况

4.1 使用mysqlnd库

代码如下:

$sql = "SELECT * FROM user";
$mysqli_result = $mysqli->query($sql);
//获取结果集中的所有数据,默认返回二维数组,一维是行,二位是数据
//fetch_all()默认参数是MYSQLI_NUM,即返回索引数组
//参数MYSQLI_ASSOC,则返回关联数组
//fetch_all()只能用于mysqlnd库
$rows = $mysqli_result->fetch_all();
//使用完后释放结果集,或者$mysqli->result->free();
$mysqli_result->close();

4.2 如果没有mysqlnd库

代码如下:

$sql = "SELECT * FROM user";
$mysqli_result = $mysqli->query($sql);
//获取一行数据,还可以使用fetch_assoc(),得到一行的关联数组形式
//fetch_object()
//mysqli_result->data_seek(0);移动数据指针
while($row = $mysqli_result->fetch_row()){
    $rows[] = $row;
}
//使用完后释放结果集,或者$mysqli->result->free();
$mysqli_result->close();
//测试输出这个二位数组,类似4.1
print_r($rows);

你可能感兴趣的:(MySQL)