×
[1]데이터베이스에 연결[2]데이터베이스 사용[3]SQL 쿼리 실행[4]연산 결과 집합[5] 연결 닫기
MySQL은 작은 규모, 빠른 속도, 낮은 총 소유 비용으로 인해 많은 중소기업에서 사용됩니다. 특히 웹사이트의 총 소유 비용을 줄이기 위해 웹사이트는 mysql을 웹사이트 데이터베이스로 선택했습니다. mysql 데이터베이스 관리 시스템과 PHP 스크립팅 언어를 결합한 데이터베이스 시스템 솔루션은 점점 더 많은 웹사이트에서 채택되고 있으며, 그 중 LAMP(linux+apche+mysql+php) 모드가 가장 인기가 있습니다
PHP는 데이터베이스 운영을 위한 표준 기능인 Mysqli는 PHP5에 새로 추가되었으며 mysql 확장 기능이 개선되었습니다. 그러나 역사적 문제로 인해 PHP4에서는 mysql 확장 기능을 사용하여 개발된 프로젝트가 많았습니다. 원본 프로젝트에서 2차 개발을 수행할 경우 mysql 확장 기능을 사용해야 합니다. 새로 설계한 프로젝트라면 mysqli 확장이나 PDO 기술을 사용하는 것이 좋습니다. 이번 글에서는 주로 PHP의 mysql 확장 기능을 소개합니다
PHP 스크립트에서 MySQL 데이터베이스를 동작시키는 몇 가지 단계는 다음과 같습니다.
1. MySQL 데이터베이스에 접속합니다. 연결이 올바른지 확인
2. 데이터베이스를 선택하고 문자셋을 설정합니다(선택)
3. SQL 명령을 실행
4. 처리 결과 세트
5. 데이터베이스 연결 종료
mysql_connect()
mysql_connect() 함수 MySQL 서버에 대한 연결을 여는 데 사용됩니다. 성공 시 리소스 반환, 실패 시 FALSE 반환 🎜>
mysql_errno() 함수는 이전 MySQL 작업에서 오류 메시지의 숫자 코드를 반환하는 데 사용됩니다
resource mysql_connect ([ string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]] )
mysql_error()
mysql_error() 함수는 mysql_error() 함수에 의해 생성된 텍스트 오류 메시지를 반환하는 데 사용됩니다. 이전 MySQL 작업. 연결 리소스 번호를 지정하지 않으면 마지막으로 열린 연결을 사용하여 MySQL 서버int mysql_errno ([ resource $link_identifier ] )
2단계: 데이터베이스 선택 및 문자셋 설정(선택)
일반적으로 데이터베이스 생성 작업은 데이터베이스 관리자(DBA)가 먼저 수립하고, 그런 다음 스크립트에서 PHP 프로그래머가 사용합니다. 예를 들어, bookstore
string mysql_error ([ resource $link_identifier ] )
라는 데이터베이스를 생성합니다. PHP 스크립트를 사용하여 mysql 서버와 연결한 후, mysql 확장이 실행될 때마다 대상 데이터베이스를 지정하지 않도록 합니다. PHP의 함수가 호출되면 먼저 mysql_select_db() 함수를 사용하여 후속 작업을 위한 기본 데이터베이스를 선택하는 것이 가장 좋습니다. 이 함수는 SQL 명령 "USE bookstore"
mysql_select_db와 유사한 기능을 가지고 있습니다. ()
<?php$link = mysql_connect('localhost','root','123456'); var_dump($link);//resource(3, mysql link)if(!$link){die('连接失败:'.mysql_error()); }?>
3단계: SQL 명령 실행
먼저 서점 데이터베이스에 도서 데이터 테이블을 생성합니다.
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');//设置字符集(一般不常用)?>PHP에서는 SQL 명령이 문자열로 mysql_query() 함수에 전달되면 MYSQL로 전송됩니다.
mysql_query()
CREATE TABLE books( id INT NOT NULL AUTO_INCREMENT,bookname VARCHAR(80) NOT NULL DEFAULT '',publisher VARCHAR(60) NOT NULL DEFAULT '',author VARCHAR(20) NOT NULL DEFAULT '',price DOUBLE(5,2) NOT NULL DEFAULT 0.00,ptime INT NOT NULL DEFAULT 0, pic CHAR(24) NOT NULL DEFAULT '',detail TEXT,PRIMARY KEY(id)); ));mysql_query() 함수는 MySQL 쿼리를 보내는 데 사용됩니다. mysql_query()는 SELECT, SHOW, DESCRIBE, EXPLAIN 및 기타 문에 대한 리소스만 반환합니다. 쿼리에 오류가 있는 경우 INSERT, UPDATE, DELETE, DROP 등과 같은 다른 유형의 SQL 문에 대해서는 FALSE를 반환합니다. ., mysql_query()가 실행 중입니다. 성공 시 TRUE를 반환하고 오류 시 FALSE를 반환합니다.
삽입할 세 개의 INSERT 문을 선언합니다. 문자열로
resource mysql_query ( string $query [, resource $link_identifier = NULL ] )mysql_query() 함수를 사용하여 INSERT 문을 보내면 true를 반환합니다. 실패하면 false를 반환합니다
$insert = "insert into books(bookname, publisher, author, price, detail) values ('PHP','电子工业出版社','张三','80.00','PHP相关'), ('ASP','电子工业出版社','李四','90.00','ASP相关'), ('JSP','电子工业出版社','王五','70.00','JSP相关')";
mysql_affected_rows () Get 이전 MySQL 작업의 영향을 받은 레코드 행 수입니다. 실행이 성공하면 영향을 받은 행의 수가 반환됩니다. 최신 쿼리가 실패하면 함수는 -1
$result = mysql_query($insert);var_dump($result);
일반적으로 mysql_affected_rows() 함수의 값이 0보다 큰지 여부를 판단하여 데이터 작업의 성공 여부를 판단합니다
mysql_insert_id()
mysql_insert_id()函数用来取得上一步 INSERT 操作产生的 ID
int mysql_insert_id ([ resource $link_identifier ] )
<? = "" = (( && () > 0 "数据记录插入成功,最后一条插入的数据记录id为:".()." " "数据记录插入失败,错误号:".().",错误原因:".()." "?>
实际上,最后一个id应该为6,但是由于4、5、6三条语句是同时插入的,这时显示的是第一个id为4
下面,将id为4的记录的作者修改为小白
= ("UPDATE books SET author='小白' WHERE id='4'"( && () > 0 "数据记录修改成功 " "数据记录修改失败,错误号:".().",错误原因:".()." "
下面,删除作者为李四的记录
= ("DELETE FROM books WHERE author='李四'"( && () > 0 "数据记录删除成功 " "数据记录删除失败,错误号:".().",错误原因:".()." "
在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
从结果中可以看出,该结果集总共有4行8列
如果需要访问结果集中的数据,可以选用mysql_fetch_row()、mysql_fetch_assoc()、mysql_fetch_array()、mysql_fetch_object()这4个函数中的任意一个
mysql_fetch_row()
mysql_fetch_row()函数从结果集中取得一行作为枚举数组
array mysql_fetch_row ( resource $result )
如果需要访问结果集中的数据,可以选用mysql_fetch_row()、mysql_fetch_assoc()、mysql_fetch_array()、mysql_fetch_object()这4个函数中的任意一个
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_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH,默认值是 MYSQL_BOTH
array mysql_fetch_array ( resource $result [, int $ result_type ] )
$result = mysql_query("SELECT * FROM books");$array = mysql_fetch_array($result); //Array ( [0] => 1 [id] => 1 [1] => PHP [bookname] => PHP [2] => 电子工业出版社 [publisher] => 电子工业出版社 [3] => 张三 [author] => 张三 [4] => 80.00 [price] => 80.00 [5] => 0 [ptime] => 0 [6] => [pic] => [7] => PHP相关 [detail] => PHP相关 )print_r($array); $array = mysql_fetch_array($result); // Array ( [0] => 3 [id] => 3 [1] => JSP [bookname] => JSP [2] => 电子工业出版社 [publisher] => 电子工业出版社 [3] => 王五 [author] => 王五 [4] => 70.00 [price] => 70.00 [5] => 0 [ptime] => 0 [6] => [pic] => [7] => JSP相关 [detail] => JSP相关 )print_r($array);
mysql_fetch_object()
mysql_fetch_object()函数从结果集中取得一行作为对象
object mysql_fetch_object ( resource $result )
$result = mysql_query("SELECT * FROM books");$object = mysql_fetch_object($result); //stdClass Object ( [id] => 1 [bookname] => PHP [publisher] => 电子工业出版社 [author] => 张三 [price] => 80.00 [ptime] => 0 [pic] => [detail] => PHP相关 )print_r($object); $object = mysql_fetch_object($result); //stdClass Object ( [id] => 3 [bookname] => JSP [publisher] => 电子工业出版社 [author] => 王五 [price] => 70.00 [ptime] => 0 [pic] => [detail] => JSP相关 ) print_r($object);
对于上面的四个函数来说,默认指针都指向第一行记录。在获取一行记录后,指针会自动下移。如果是最后一委,则函数返回false。一般地,mysql_fetch_assoc()这种返回关联数组形式的函数较常用
mysql_data_seek()
mysql_data_seek()函数可以移动内部结果的指针
[注意]$row_number从0开始
bool mysql_data_seek ( resource $result , int $row_number )
$result = mysql_query("SELECT * FROM books"); $assoc = mysql_fetch_assoc($result); mysql_data_seek($result , 2);$assoc = mysql_fetch_assoc($result); Array ( [id] => 4 [bookname] => PHP [publisher] => 电子工业出版社 [author] => 小白[price] =>80.00 [ptime] => 0 [pic] => [detail] => PHP相关 )print_r($assoc);mysql_data_seek($result , 0); $assoc = mysql_fetch_assoc($result);//Array ( [id] => 1 [bookname] => PHP [publisher] => 电子工业出版社 [author] => 张三 [price] => 80.00 [ptime] => 0 [pic] => [detail] => PHP相关 ) print_r($assoc);
下面使用while循环和mysql_fetch_assoc()函数将结果集以表格的形式显示出来
table{ border:1px solid black; border-collapse:collapse; table-layout:fixed; }" _ue_custom_node_="true">$result = mysql_query("SELECT id,bookname,publisher,author,price FROM books"); echo '';echo '';echo '编号';echo '书名';echo '出版社';echo '作者';echo '价格';echo ''; while($assoc = mysql_fetch_assoc($result)) {echo ''; echo "{$assoc['id']}";echo "{$assoc['bookname']}"; echo "{$assoc['publisher']}";echo "{$assoc['author']}"; echo "{$assoc['price']}";echo ''; }echo '';
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,则关闭上一个打开的连接
所以,一个比较完整的php操作数据库扩展函数的程序如下所示
<?php//连接数据库$link = mysql_connect('localhost','root','******');if(!$link){die('连接失败:'.mysql_error()); }//选择数据库mysql_select_db('bookstore',$link) or die('不能选定数据库bookstore:' .mysql_error()); //执行SQL命令$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); //操作结果集$result = mysql_query("SELECT id,bookname,publisher,author,price FROM books"); echo ''; echo ''; echo '编号'; echo '书名'; echo '出版社'; echo '作者'; echo '价格'; echo ''; while($assoc = mysql_fetch_assoc($result)) { echo '';echo "{$assoc['id']}";echo "{$assoc['bookname']}";echo "{$assoc['publisher']}"; echo "{$assoc['author']}";echo "{$assoc['price']}";echo ''; }echo '';//释放结果集mysql_free_result($result);//关闭数据库连接mysql_close($link);?>
以上就是前端学PHP之mysql扩展函数的内容,更多相关内容请关注PHP中文网(www.php.cn)!