mysql拡張関数

12878 ワード

mysqlは、体積が小さく、速度が速く、TCOが低いため、特にオープンソースという特徴があり、多くの中小規模のWebサイトがWebサイトのTCOを削減するためにmysqlをWebデータベースとして選択しています.mysqlデータベース管理システムとphpスクリプト言語を組み合わせたデータベースシステムソリューションは、LAMP(linux+apche+mysql+php)モデルが最も流行しているウェブサイトでますます多く採用されている.
PHPにはデータベースを操作するための標準的な関数があり、mysqliはPHP 5に新しく追加され、mysql拡張の改善です.しかし、歴史的な問題が残っているため、PHP 4でmysql拡張を使用して開発された古いプロジェクトが多く、既存のプロジェクトで二次開発を行う場合はmysql拡張関数を使用する必要があります.新しく設計されたプロジェクトの場合はmysqli拡張またはPDOテクノロジーを推奨します.本文は主にPHP中のmysql拡張関数を紹介する
 
総括する
PHPスクリプトでMySQLデータベースを操作するには、次の手順に従います.
1、MySQLデータベースサーバーに接続し、正しく接続されているかどうかを判断する
2、データベースを選択し、文字セットを設定する(オプション)
3、SQLコマンドの実行
4、処理結果セット
5、データベース接続を閉じる
 
MySQLデータベースサーバに接続し、正しく接続されているかどうかを判断します.
mysql_connect()
  mysql_接続()関数は、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 ] )

 
データベースを選択し、文字セットを設定します(オプション)
通常、データベースの作成作業は、データベース管理者(DBA)が先に作成し、PHPプログラマがスクリプトで使用します.たとえば、bookstoreという名前のデータベースを作成します.
PHPスクリプトを使用してmysqlサーバへの接続を確立した後、PHPを呼び出すmysql拡張関数のたびにターゲット・データベースが指定されないようにするには、mysql_を使用することが望ましいselect_db()関数は、SQLコマンド「USE bookstore」機能に似た後続操作のデフォルトデータベースを選択します.
mysql_select_db()
  mysql_select_db()関数MySQLデータベースの選択
bool mysql_select_db ( string $database_name [, resource $ link_identifier ] )

 
SQLコマンドの実行
まず、bookstoreデータベースにbooksデータテーブルを作成します.
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));
));

PHPではSQLコマンドを文字列としてmysql_に渡すQuery()関数は、MYSQLサーバに送信して実行します.
mysql_query()
  mysql_query()関数は、MySQLクエリーを送信するために使用されます.mysql_query()は、SELECT、SHOW、DESCRIBE、EXPLAIN、その他の文に対してのみresourceを返し、クエリにエラーが発生した場合はFALSEを返します.INSERT、UPDATE、DELETE、DROPなどの他のタイプのSQL文についてmysql_Query()実行成功時にTRUEを返し、エラー時にFALSEを返す
resource mysql_query ( string $query [, resource $link_identifier = NULL ] )

挿入する3つのINSERT文を1つの文字列として宣言
$insert = "insert into books(bookname, publisher, author, price, detail) values
('PHP','       ','  ','80.00','PHP  '),
('ASP','       ','  ','90.00','ASP  '),
('JSP','       ','  ','70.00','JSP  ')";

mysql_の使用query()関数はINSERT文を送信し、trueが正常に返された場合、失敗した場合falseを返します.
$result = mysql_query($insert);var_dump($result);

mysql_affected_rows()
  mysql_affected_rows()関数は、前回のMySQL操作で影響を受けたレコード行数を取得するために使用されます.実行に成功すると、影響を受けるローの数が返されます.最近のクエリが失敗すると、関数は-1を返します.
int mysql_affected_rows ([ resource $link_identifier = NULL ] )
var_dump(mysql_affected_rows());//int3

通常mysql_を判断することでaffected_rows()関数の値が0より大きいかどうかは、データ操作が成功したかどうかを決定します.
mysql_insert_id()
  mysql_insert_id()関数は、前のINSERT操作で生成されたIDを取得するために使用される
int mysql_insert_id ([ resource $link_identifier ] )
 0){    //       ,          。            ,           id :4
    echo "        ,           id :".mysql_insert_id()."
"; }else{    // , , :1146, :La table 'bookstore.books' n'existe pas     echo " , :".mysql_errno().", :".mysql_error()."
"; }?>

実際、最後のidは6であるべきですが、4、5、6の3つの文が同時に挿入されているため、最初のidが4であることが表示されます.
以下、idが4のレコードの作者を白に変更する
$result = mysql_query("UPDATE books SET author='  ' WHERE id='4'");if($result && mysql_affected_rows() > 0){    echo "        
"; }else{    echo " , :".mysql_errno().", :".mysql_error()."
"; }

以下、著者が李四である記録を削除する
$result = mysql_query("DELETE FROM books WHERE author='  '");if($result && mysql_affected_rows() > 0){    echo "        
"; }else{    echo " , :".mysql_errno().", :".mysql_error()."
"; }

 
結果セットの処理
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()関数結果セットから列挙配列として1行を取得する
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()関数結果セットから列挙配列として1行を取得する
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()関数は結果セットから関連配列として1行を取得する
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()関数は、結果セットから関連配列、または数値配列、または両方として1行を取得します.mysql_fetch_Array()でオプションの2番目のパラメータ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()関数結果セットから1行をオブジェクトとして取得
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);

上記の4つの関数では、デフォルトのポインタは1行目のレコードを指します.1行のレコードを取得すると、ポインタは自動的に下に移動します.最後の委員会の場合、関数は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()関数は結果セットを表形式で表示します
$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 "";    echo "";    echo "";    echo "";    echo "";    echo '';
}echo'番号書名出版社著者価格{$assoc['id']}{$assoc['bookname']}{$assoc['publisher']}{$assoc['author']}{$assoc['price']}';
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()指定した接続IDに関連付けられたMySQLサーバへの非永続接続を閉じます.link_が指定されていない場合identifierは、前の開いた接続を閉じます.
したがって、比較的完全なphp操作データベース拡張関数のプログラムは以下の通りである.
';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);?>