ホームページ  >  記事  >  php教程  >  フロントエンド学習PHP mysql拡張機能

フロントエンド学習PHP mysql拡張機能

PHP中文网
PHP中文网オリジナル
2016-12-05 13:26:271469ブラウズ

×

ディレクトリ

[1]データベースに接続する[2]データベースを使用する[3]SQLクエリを実行する[4]操作結果セット[5]接続を閉じる


前の言葉

そのサイズによるmysql 小さく、高速で、総所有コストが低い、特にオープンソースでは、多くの中小規模のWebサイトがWebサイトの総所有コストを削減するために、WebサイトデータベースとしてMySQLを選択します。 mysql データベース管理システムと php スクリプト言語を使用したデータベース システム ソリューションは、ますます多くの Web サイトで採用されており、その中でも LAMP (linux+apche+mysql+php) モードが最も人気があります

PHP には標準があります。 Mysqli はデータベースを操作するために使用される関数であり、mysql 拡張機能を改良したものです。ただし、歴史的な問題により、古いプロジェクトの多くは PHP4 の mysql 拡張機能を使用して開発されており、オリジナルのプロジェクトを二次開発する場合は、mysql 拡張機能を使用する必要があります。新しく設計されたプロジェクトの場合は、mysqli 拡張または PDO テクノロジを使用することをお勧めします。この記事では主にPHPのmysql拡張機能について紹介します

概要

PHPスクリプトでMySQLデータベースを操作するためのいくつかの手順は次のとおりです:

1. MySQLデータベースサーバーに接続し、接続が正しいかどうかを確認します

2 . データベースを選択し、文字セットを設定します(オプション)

3. SQLコマンドを実行します

4. 結果セットを処理します

5. データベース接続を閉じます

ステップ1: 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 操作でのエラーメッセージの数値エンコーディングを返すために使用されます

mysql_error() 関数は、前の MySQL 操作によって生成されたテキスト エラー メッセージを返すために使用されます。接続リソース番号が指定されていない場合、最後に正常に開かれた接続が MySQL サーバーからエラー情報を抽出するために使用されます


int mysql_errno ([ resource $link_identifier ] )

string mysql_error ([ resource $link_identifier ] )

ステップ 2: データベースを選択し、文字セットを設定します (オプション) )

通常、データベース作成作業は最初にデータベース管理者 (DBA) によって確立され、次に PHP プログラマーによってスクリプト内で使用されます。たとえば、bookstore という名前のデータベースを作成します


PHP スクリプトを使用して mysql サーバーとの接続を確立した後、PHP の mysql 拡張関数が呼び出されるたびにターゲット データベースを指定することを避けるために、次のようにするのが最善です。後続の操作には mysql_select_db() 関数を使用します。この関数は、SQL コマンド「USE Bookstore」に似ています。

ステップ 3: SQL コマンドを実行します。
まず、書店データベースに書籍データテーブルを作成します

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

PHP では、SQL コマンドを文字列として mysql_query() 関数に渡すだけで、MYSQL サーバーに送信されますmysql_query() 関数は、MySQL クエリを送信するために使用されます。 mysql_query() は、SELECT、SHOW、DESCRIBE、EXPLAIN およびその他のステートメントに対してのみリソースを返します。クエリにエラーがある場合は、INSERT、UPDATE、DELETE、DROP などの他の種類の SQL ステートメントに対しては FALSE を返します。 ., mysql_query() が実行されています成功した場合は TRUE、エラーの場合は FALSE を返します

bool mysql_select_db ( string $database_name [, resource $ link_identifier ] )


文字列として挿入される 3 つの INSERT ステートメントを宣言します


<?php$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;zhiaihebe0123&#39;);
var_dump($link);//resource(3, mysql link)if(!$link){die(&#39;连接失败:&#39;.mysql_error());
}mysql_select_db(&#39;bookstore&#39;,$link) or die(&#39;不能选定数据库bookstore:&#39; .mysql_error());
mysql_query(&#39;set names utf8&#39;);//设置字符集(一般不常用)?>


mysql_query( ) 関数INSERT ステートメントを送信します。成功した場合は true を返し、失敗した場合は false を返します。 mysql_affected_rows() 関数は、前の MySQL 操作によって影響を受けたレコード行の数を取得するために使用されます。実行が成功した場合、影響を受けた行の数が返されます。最新のクエリが失敗した場合、関数は -1

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));
));


resource mysql_query ( string $query [, resource $link_identifier = NULL ] )

を返します。 () 関数は 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(&#39;localhost&#39;,&#39;root&#39;,&#39;******&#39;);if(!$link){die(&#39;连接失败:&#39;.mysql_error());
}//选择数据库mysql_select_db(&#39;bookstore&#39;,$link) or die(&#39;不能选定数据库bookstore:&#39; .mysql_error());
//执行SQL命令$insert = "insert into books(bookname, publisher, author, price, detail) values
(&#39;PHP&#39;,&#39;电子工业出版社&#39;,&#39;张三&#39;,&#39;80.00&#39;,&#39;PHP相关&#39;),
(&#39;ASP&#39;,&#39;电子工业出版社&#39;,&#39;李四&#39;,&#39;90.00&#39;,&#39;ASP相关&#39;),
(&#39;JSP&#39;,&#39;电子工业出版社&#39;,&#39;王五&#39;,&#39;70.00&#39;,&#39;JSP相关&#39;)";
$result = mysql_query($insert);
//操作结果集$result = mysql_query("SELECT id,bookname,publisher,author,price FROM books");
echo &#39;&#39;;
echo &#39;&#39;;
echo &#39;编号&#39;;
echo &#39;书名&#39;;
echo &#39;出版社&#39;;
echo &#39;作者&#39;;
echo &#39;价格&#39;;
echo &#39;&#39;;
while($assoc = mysql_fetch_assoc($result)) {
echo &#39;&#39;;echo "{$assoc[&#39;id&#39;]}";echo "{$assoc[&#39;bookname&#39;]}";echo "{$assoc[&#39;publisher&#39;]}";
echo "{$assoc[&#39;author&#39;]}";echo "{$assoc[&#39;price&#39;]}";echo &#39;&#39;;
}echo &#39;&#39;;//释放结果集mysql_free_result($result);//关闭数据库连接mysql_close($link);?>

以上就是前端学PHP之mysql扩展函数的内容,更多相关内容请关注PHP中文网(www.php.cn)!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。