×
[1]Mit Datenbank verbinden[2]Datenbank verwenden[3]SQL-Abfrage ausführen[4]Operationsergebnissatz[5] Enge Verbindung
MySQL wird aufgrund seiner geringen Größe, hohen Geschwindigkeit und niedrigen Gesamtbetriebskosten von vielen kleinen und mittleren Unternehmen verwendet , insbesondere aufgrund des Open-Source-Charakters, wählte die Website MySQL als Website-Datenbank, um die Gesamtkosten für den Betrieb der Website zu senken. Datenbanksystemlösungen, die das MySQL-Datenbankverwaltungssystem mit der PHP-Skriptsprache kombinieren, werden von immer mehr Websites übernommen, wobei der LAMP-Modus (Linux+Apche+MySQL+php) der beliebteste ist
PHP hat Standardfunktionen für den Betrieb von Datenbanken werden in PHP5 neu hinzugefügt und stellen eine Verbesserung gegenüber der MySQL-Erweiterung dar. Aufgrund historischer Probleme wurden jedoch viele alte Projekte mit der MySQL-Erweiterung in PHP4 entwickelt. Wenn eine Sekundärentwicklung für das ursprüngliche Projekt durchgeführt wird, ist die Verwendung von MySQL-Erweiterungsfunktionen erforderlich. Wenn es sich um ein neu entworfenes Projekt handelt, wird die Verwendung der MySQLi-Erweiterung oder der PDO-Technologie empfohlen. In diesem Artikel wird hauptsächlich die MySQL-Erweiterungsfunktion in PHP vorgestellt.
Mehrere Schritte zum Betreiben der MySQL-Datenbank im PHP-Skript sind wie folgt:
1. Stellen Sie eine Verbindung zur MySQL-Datenbank her Server und stellen Sie fest, ob die Verbindung korrekt ist
2. Wählen Sie die Datenbank aus und legen Sie den Zeichensatz fest (optional)
3. Führen Sie den SQL-Befehl aus
4. Verarbeiten Sie die Ergebnismenge
5. Schließen Sie die Datenbankverbindung
mysql_connect()
mysql_connect()-Funktion Wird verwendet, um eine Verbindung zum MySQL-Server herzustellen. Gibt bei Erfolg eine Ressource oder bei Fehler FALSE zurück 🎜>
Die Funktion mysql_errno() wird verwendet, um den numerischen Code der Fehlermeldung im vorherigen MySQL-Vorgang zurückzugeben
resource mysql_connect ([ string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]] )
mysql_error()
Die Funktion mysql_error() wird verwendet, um die von der generierte Textfehlermeldung zurückzugeben vorheriger MySQL-Vorgang. Wenn die Verbindungsressourcennummer nicht angegeben ist, wird die zuletzt erfolgreich geöffnete Verbindung verwendet, um Fehlerinformationen vom MySQL-Server zu extrahierenint mysql_errno ([ resource $link_identifier ] )
Schritt 2: Wählen Sie die Datenbank aus und legen Sie den Zeichensatz fest (optional)
Normalerweise wird die Arbeit zur Datenbankerstellung zunächst vom Datenbankadministrator (DBA) festgelegt. und dann von PHP-Programmierern in Skripten verwendet. Erstellen Sie beispielsweise eine Datenbank mit dem Namen bookstore
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()); }?>
auszuwählen
Schritt 3: Führen Sie den SQL-Befehl aus
Erstellen Sie zunächst eine Buchdatentabelle in der Buchhandlungsdatenbank
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');//设置字符集(一般不常用)?>
Solange Sie in PHP den SQL-Befehl als Zeichenfolge an die Funktion mysql_query() übergeben, wird er an MYSQL gesendet Server und ausgeführt
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)); ));
Die Funktion mysql_query() wird zum Senden einer MySQL-Abfrage verwendet. mysql_query() gibt nur eine Ressource für SELECT-, SHOW-, DESCRIBE-, EXPLAIN- und andere Anweisungen zurück und gibt FALSE zurück, wenn in der Abfrage ein Fehler für andere Arten von SQL-Anweisungen vorliegt, z. B. INSERT, UPDATE, DELETE, DROP usw. , mysql_query() wird ausgeführt. Gibt bei Erfolg TRUE zurück, bei Fehler FALSE.
Deklarieren Sie die drei einzufügenden INSERT-Anweisungen als eine Zeichenfolge
resource mysql_query ( string $query [, resource $link_identifier = NULL ] )
Verwenden Sie die Funktion mysql_query(), um die INSERT-Anweisung zu senden. Wenn sie erfolgreich ist, gibt sie true zurück, wenn es schlägt fehl, es gibt false zurück
$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);var_dump($result);
Normalerweise wird festgestellt, ob die Datenoperation erfolgreich ist, indem beurteilt wird, ob der Wert der Funktion mysql_affected_rows() größer als 0 ist
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中文网(m.sbmmt.com)!