php连接MySQL分析

Mysql:在PHP脚本中操作MySQL数据库的的几个步骤如下:

1、连接MySQL数据库服务器,并判断是否连接正确

2、选择数据库,并设置字符集(可选)

3、执行SQL命令

4、处理结果集

5、关闭数据库连接

连接MySQL数据库服务器,并判断是否连接正确

mysql_connect()

mysql_connect()函数用来打开一个到 MySQL 服务器的连接。如果成功则返回一个资源, 或者在失败时返回FALSE

resource mysql_connect ([ string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]] )

mysql_errno()

mysql_errno()函数用于返回上一个 MySQL 操作中的错误信息的数字编码

int mysql_errno ([ resource $link_identifier ] )

mysql_error()

mysql_error()函数用于返回上一个 MySQL 操作产生的文本错误信息。如果没有指定连接资源号,则使用上一个成功打开的连接从 MySQL 服务器提取错误信息

string mysql_error ([ resource $link_identifier ] )
<?php
$link = mysql_connect('localhost','root','123456');
var_dump($link);//resource(3, mysql link)
if(!$link){
    die('连接失败:'.mysql_error());
}
?>

选择数据库,并设置字符集(可选)

mysql_select_db()

mysql_select_db()函数用于选择 MySQL 数据库

bool mysql_select_db ( string $database_name [, resource $ link_identifier ] )
<?php
$link = mysql_connect('localhost','root','zhiaihebe0123');
var_dump($link);//resource(3, mysql link)
if(!$link){
    die('连接失败:'.mysql_error());
}
mysql_select_db('bookstore',$link) or die('不能选定数据库bookstore:' .mysql_error());

mysql_query('set names utf8');//设置字符集(一般不常用)
?>

执行SQL命令

mysql_query()

在PHP中,mysql_query()函数会将sql语句发送到MYSQL服务器并执行,mysql_query() 仅对 SELECT,SHOW,DESCRIBE, EXPLAIN 和其他语句返回一个resource,如果查询出现错误则返回 FALSE;对于其它类型的 SQL 语句,比如INSERT, UPDATE, DELETE, DROP 之类, mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE

mysql_affected_rows()

mysql_affected_rows()函数用于取得前一次 MySQL 操作所影响的记录行数。执行成功则返回受影响的行的数目,如果最近一次查询失败的话,函数返回 -1

var_dump(mysql_affected_rows());//int3

通常通过判断mysql_affected_rows()函数的值是否大于0来确定数据操作是否成功

mysql_insert_id()

mysql_insert_id()函数用来取得上一步 INSERT 操作产生的 ID

<?php
$insert = "insert into books(bookname, publisher, author, price, detail) values
('PHP','电子工业出版社','张三','80.00','PHP相关'),
('ASP','电子工业出版社','李四','90.00','ASP相关'),
('JSP','电子工业出版社','王五','70.00','JSP相关')";
$result = mysql_query($insert);
if($result && mysql_affected_rows() > 0){
    //刷新页面两次后,相当于插入了两次数据。页面显示数据记录插入成功,最后一条插入的数据记录id为:4
    echo "数据记录插入成功,最后一条插入的数据记录id为:".mysql_insert_id()."<br>";
}else{
    //若在数据表删除后,则显示数据记录插入失败,错误号:1146,错误原因:La table 'bookstore.books' n'existe pas
    echo "数据记录插入失败,错误号:".mysql_errno().",错误原因:".mysql_error()."<br>";
}
?>

实际上,由于4、5、6三条语句是同时插入的,这时显示的是第一个id为4

处理结果集

在PHP脚本中执行SELECT查询命令,也是调用mysql_query()函数,但和执行DML不同的是,执行SELECT命令之后,mysql_query()函数的返回值是一个PHP资源的引用指针(结果集)。这个返回值可以在各种结果集处理函数中,对结果数据表的各个字段进行处理

mysql_num_fields()

mysql_num_fields()函数取得结果集中字段的数目

int mysql_num_fields ( resource $result )

mysql_num_rows()

mysql_num_rows()函数取得结果集中行的数目

int mysql_num_rows ( resource $result )
$result = mysql_query("SELECT * FROM books");
$rows = mysql_num_rows($result);
$cols = mysql_num_fields($result);
var_dump($rows,$cols);//int 4 int 8

mysql_fetch_row()

mysql_fetch_row()函数从结果集中取得一行作为枚举数组

array mysql_fetch_row ( resource $result )
$result = mysql_query("SELECT * FROM books");
$row = mysql_fetch_row($result);
//Array ( [0] => 1 [1] => PHP [2] => 电子工业出版社 [3] => 张三 [4] => 80.00 [5] => 0 [6] => [7] => PHP相关 )
print_r($row);
$row = mysql_fetch_row($result);
//Array ( [0] => 3 [1] => JSP [2] => 电子工业出版社 [3] => 王五 [4] => 70.00 [5] => 0 [6] => [7] => JSP相关 )
print_r($row);

mysql_fetch_assoc()

mysql_fetch_assoc()函数从结果集中取得一行作为关联数组

array mysql_fetch_assoc ( resource $result )
$result = mysql_query("SELECT * FROM books");
$assoc = mysql_fetch_assoc($result);
//Array ( [id] => 1 [bookname] => PHP [publisher] => 电子工业出版社 [author] => 张三 [price] => 80.00 [ptime] => 0 [pic] => [detail] => PHP相关 )
print_r($assoc);
$assoc = mysql_fetch_assoc($result);
//Array ( [id] => 3 [bookname] => JSP [publisher] => 电子工业出版社 [author] => 王五 [price] => 70.00 [ptime] => 0 [pic] => [detail] => JSP相关 )
print_r($assoc);

mysql_fetch_array()

mysql_fetch_array()函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有。

mysql_free_result()

mysql_free_result()函数用于释放结果内存

bool mysql_free_result ( resource $result )

mysql_free_result() 仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后所有关联的内存都会被自动释放

关闭数据库连接

mysql_close()

mysql_close()函数用于关闭 MySQL 连接

bool mysql_close ([ resource $link_identifier = NULL ] )

mysql_close() 关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier,则关闭上一个打开的连接

相关推荐