PHP は多くの拡張ライブラリを提供しています。ここで話しているのは MySQL 拡張ライブラリの使用ですが、MySQL 拡張ライブラリを使用して書かれたコードに実行時の警告プロンプト。本当はもう一つ直接書きたかったのですが、これがベースになっている気がします。 MySQL 拡張ライブラリというと、多くの関数がライブラリを構成することを当然考えます。拡張ライブラリを使用するということは、そのライブラリ内の関数を使用することを意味します。 MySQL 拡張ライブラリは完全にプロセス指向であり、明らかにオブジェクト指向の特性に準拠していないため、放棄されたのは理解できます。早速、本題に入りましょう。
1. MySQL 拡張ライブラリを使用してデータベースを操作する PHP の概略図この図は私が描いたものであり、不正確である可能性があります。
MySQL を使用してデータベースを操作するには、大まかに 5 つの手順を実行することがわかります:
ここで使用する関数は mysql_connect() 関数です
3. SQL ステートメントの実行
ここでは mysql_query() 関数が使用されます。いわゆる SQL ステートメントは、追加、削除、変更、およびクエリ操作です。ここでは、mysql_free_result() 関数を使用してシステム リソースを解放します
2.詳細
1. MySQL サーバーへの接続resource mysql_connect([string server[,string username[,string passwd[,bool new_link[,int client_flags]]]]] );
最初のサーバーは MySQL サーバーを指し、デフォルトのローカルホストを使用できます。
2 番目のユーザー名は、データベースのインストール時に設定したユーザー名です。デフォルトは root です。
3 番目のパスワードはデータベースのパスワードです。
接続が成功すると MySQL 接続 ID が返され、それ以外の場合は false が返されます。
たとえば、自分のデータベースに接続する場合、サーバーは localhost、ユーザー名は root、パスワードは root です。次のようにテストできます
<?php $host = 'localhost'; $username = 'root'; $password = 'root'; if($conn = mysql_connect($host,$username,$password)){ echo "连接MySQL服务器成功"; }else{ echo "连接失败"; }
2. データベースを選択します
bool mysql_select_db(string database_name[,resource link_identifier]);
成功した場合は true を返し、失敗した場合は false を返します。
たとえば、前回作成したテスト データベースに接続する必要がある場合は、次のように記述できます:
<?php $host = 'localhost'; $username = 'root'; $password = 'root'; $database_name = 'test'; $conn = mysql_connect($host,$username,$password); if(mysql_select_db($database_name,$conn)){ echo "数据库连接成功"; }else{ echo "连接失败"; }
3. SQL ステートメントを実行します
いわゆる SQL ステートメントは追加、削除です。 、データベースに対する変更およびクエリ操作。コマンドラインを使用してデータベースを操作する場合に導入されています。関数の構文は次のとおりです:
2 番目のパラメータは、mysql_connect によって返される接続 ID です。書くことをお勧めします。
SQL ステートメントは、ddl [データ定義ステートメント]、dml [更新、挿入、削除などのデータ操作ステートメント]、dql [選択]、dtl [データ トランザクション ステートメントのロールバック コミット] に分かれており、最もよく使用されるのはdqlステートメント、つまりクエリステートメントです。 dql ステートメントの実行が成功すると、「データ ポインタ」が返され、失敗すると true が返されます。
たとえば、テーブルに現在どのようなデータがあるかをクエリしたい場合は、次のように記述できます。
<span style="font-size:14px;"><?php $host = 'localhost'; $username = 'root'; $password = 'root'; $database_name = 'test'; $conn = mysql_connect($host,$username,$password); mysql_select_db($database_name,$conn); $sql = "select * from tb_student;"; $query = mysql_query($sql,$conn); while($res = mysql_fetch_assoc($query)){ echo $res['id'].'--'.$res['name'].'--'.$res['email'].'--'.$res['address'].'--'.$res['age'].'<br>'; }</span>
SQL ステートメントを変更するだけで、追加、削除、変更の例はありません。次に、true または false を返します。結果セットを取得する必要はありません。
4. 結果セットを閉じる
mysql_free_result(resource $res);
たとえば、上記の作業を完了したら、結果セットを閉じることができます、mysql_free_result($query);
5.たとえば、上記のプログラムの最後で、mysql_close($conn); と切断できます
3. 包括的なケースを次に示します
<?php //mysql扩展库操作数据库步骤如下 //1.获取连接 $conn = mysql_connect("localhost","root","root"); if(!$conn){ die("连接失败".mysql_error); } //2.选择数据库 mysql_select_db("mr_mysql"); //3.设置操作编码(建议有) mysql_query("set names utf8"); //4.发送指令sql (ddl【数据定义语句】 ,dml【 数据操作语句,如update,insert,delete】,dql【 select】 ,dtl【数据事务语句 rollback commit】) $sql = "select * from mr_user;"; $res = mysql_query($sql,$conn);//返回的数据‘指针’不是指到了第一行,而是指到第一行的前一行,也就是第0行。 //var_dump($res); //5.接收返回的结果,并处理 while($row = mysql_fetch_row($res)){ //mysql_fetch_row()是返回结果集的下一行并赋值给$row //$row 是一个数组 //第一种取法:$row[i] echo "<br>"; //echo "$row[0]--$row[1]--$row[2]--$row[3]--$row[4]"; //var_dump($row); //第二种取法 foreach($row as $key=>$value){ echo "$value--"; } } //6.释放资源 mysql_free_result($res); mysql_close($conn); //这句可以不写,建议写4. 詳細
1. $res 結果セットを使用した後は、必ずリソースを解放してください
2. mysql_close() がない場合、システムは自動的にシャットダウンします
3. mysql_close が while の前に置かれると、 mysql_query ステートメントの実行後、プログラムはデータベースをメモリに読み取り、再度使用するときはメモリから読み取るため、結果には影響しません。ただし、mysql_free_result を前に置くとエラーが発生します。
4.$rowは配列です
5.$resはdql文を実行するとリソース型を返しますが、dml文を実行するとbool値を返します
6. $resからロウデータを取得する場合はさらにto mysql_fetch_row($res)[インデックス配列を返す] メソッドは 3 つあります。 to mysql_fetch_row($res) ---------- インデックス配列と連想配列を返すには、メモリを使用しないことをお勧めします。 Mysql_fetch_object($res) --------データの行をオブジェクトとして返す
My SQL 拡張機能を使用する これでライブラリ操作データベースはほぼ完成です。 Mysqli 拡張ライブラリを使用してデータベースを操作するための基礎 次の記事では、Mysqli 拡張ライブラリの操作データベースについて説明します。