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,则关闭上一个打开的连接