PHP 操作 MySQL

不言
リリース: 2023-03-24 21:52:01
オリジナル
19412 人が閲覧しました

この記事では、主に MySQL を操作するための PHP を紹介します。これは、必要な友人に参考にしていただけるようになりました。一、PHP を使用して MySQL データベースに接続します

PHP 関数 mysqli_connect を使用して mysql データベースに接続しますPHP 操作 MySQL構文: $conn = mysqli_connect('hostname','username','password','database name' ,port); 接続が成功した場合はリソース オブジェクトが返され、接続が失敗した場合は false が返されます

$conn は [データベース接続識別子] と呼ばれます

header("Content-type:text/html;charset=utf-8");
$conn = @mysqli_connect('localhost','root','root','student') or die("数据库连接错误!");
echo "<pre class="brush:php;toolbar:false">";
var_dump($conn);echo "
";
ログイン後にコピー
2. PHP を使用して、 MySQL データベースにアクセスします
PHP 関数 mysqli_query を使用して、SQL を MySQL データベースに送信します。命令は、クエリを実行し、MySQL データベースから返された結果を関数の戻り値としてオブジェクトにカプセル化するために使用されます。

構文: $result = mysqli_query (データベース接続識別子、SQL コマンド);

$result は [結果セット] と呼ばれます

3. 結果セットの処理
$conn = mysqli_connect(&#39;主机名&#39;,&#39;用户名&#39;,&#39;密码&#39;,&#39;数据库名&#39;,端口); 连接成功返回资源对象,失败返回false
$conn 称为【数据库连接标识】

header("Content-type:text/html;charset=utf-8");
$conn = @mysqli_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;,&#39;student&#39;) or die("数据库连接错误!");
$rs = mysqli_query($conn, &#39;set names utf8&#39;);//设置PHP与MySQL交互默认字符集var_dump($rs);
$rs = mysqli_query($conn, &#39;select * from student&#39;);
while ($row = mysqli_fetch_assoc($rs)) {    
echo "<pre class="brush:php;toolbar:false">";
    var_dump($row);    
    echo "
"; }
ログイン後にコピー

二、使用PHP访问MySQL数据库

使用PHP函数 mysqli_query 向MySQL数据库发送SQL指令去查询,将MySQL数据库返回的结果封装成对象作为函数的返回值。
语法:$result = mysqli_query(数据库连接标识,SQL指令);
$result 称为【结果集】

三、结果集的处理

有两种结果集,主要区别于当前所执行的SQL指令,是否存在数据返回。

  1. 有返回数据:select、show、desc
    mysqli_query 会返回一个资源类型。执行成功返回结果集,失败返回 false
    注意:由于资源类型永远为真,不能用于判断是否有数据,只能判断命令是否执行成功

  2. 无返回数据:insert、delete、update、set、DDL(数据定义语言,如create、alter、drop)
    mysqli_query 会返回一个布尔值。执行成功返回true,失败返回 false

使用 mysqli_fetch_assoc 从结果集中读取数据,将读取到的数据以关联数组的形式返回,关联数组的键名就是 字段名 ,同时结果集的指针向下移动一行。
语法:$row = mysqli_fetch_assoc(结果集);

echo mysqli_num_rows($conn);
ログイン後にコピー

从结果集中得到数据的三个函数:

  1. mysqli_fetch_assoc() 获取一行数据作为【关联】数组返回

  2. mysqli_fetch_row() 获取一行数据作为【索引】数组返回

  3. mysqli_fetch_array() 获取一行数据作为【关联】数组和【索引】数组返回

统计结果集中数据的行数
语法:mysqli_num_rows(结果集);
通常用于判断结果集中是否有数据,如果大于0就证明有数据,等于0就是没数据。

mysqli_free_result($rs);
ログイン後にコピー

释放结果集,释放结果集所占的内存空间
语法:mysqli_free_result(结果集);

mysqli_close($conn);
ログイン後にコピー

四、关闭数据库连接

语法:mysqli_close(数据库连接标识);
如不使用 mysqli_close 关闭数据库连接,PHP默认在代码执行结束后自动关闭。

echo mysqli_error($conn);
ログイン後にコピー

五、其他用法

错误信息
语法:mysqli_error(数据库连接标识);
通常用于对错误进行调试和查看

set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
ログイン後にコピー
ログイン後にコピー

获取刚插入数据的ID
语法:mysqli_insert_id(数据库连接标识);

六、项目的字符编码

MySQL的字符集
MySQL数据最终是保存在数据库,表,记录上的。
数据在真实保存时,受到几个地方的影响:

  • 字段的编码

  • 表的编码

  • 库的编码

  • MySQL服务器的内置编码

如果字段上设置了编码,保存数据以字段编码为准。
如果字段没有设置编码,以表的编码为准。
如果表没有设置编码,则以库上设置的编码为准。
如果库没有设置编码,则以MySQL服务器的内置编码为准。

以上编码都是服务器确定的,只需对数据库、表、字段的编码进行设置即可。

数据在客户端展示的编码
四个地方影响客户端的展示

  1. 数据在服务器端存储的编码

下面三个与客户端相关

  1. 客户端向服务器端发送的数据编码
    服务器变量(配置项):character_set_client

  2. 客户端与服务器端之间的连接层使用的编码
    服务器变量(配置项):character_set_connection

  3. 服务器端向客户端发送的处理结果的数据编码
    服务器变量(配置项):character_set_resultsはい2 つの結果セットは、現在実行されている SQL コマンドと、返されるデータがあるかどうかが主に異なります。

    1. 🎜戻りデータがあります: select、show、desc 🎜mysqli_query はリソース タイプを返します。実行が成功すると結果セットが返され、失敗すると false が返されます 🎜注: リソース タイプは常に true であるため、データがあるかどうかを判断するために使用することはできません。コマンドが正常に実行されたかどうかを判断するためにのみ使用できます。 strong>🎜
    2. 🎜 データは返されません: 挿入、削除、更新、設定、DDL (作成、変更、ドロップなどのデータ定義言語) 🎜mysqli_query はブール値を返します。成功した場合は true、失敗した場合は false を返します🎜
    🎜mysqli_fetch_assoc を使用して結果セットからデータを読み取り、読み取ったデータを連想配列の形式で返します。フィールド名が表示されると同時に、結果セット ポインタが 1 行下に移動します。 🎜構文: $row = mysqli_fetch_assoc(result set);🎜rrreee🎜結果セットからデータを取得する 3 つの関数: 🎜
    1. 🎜mysqli_fetch_assoc () データの行を取得し、[関連付け] 配列として返します🎜
    2. 🎜mysqli_fetch_row() データの行を取得し、[インデックス] 配列として返します🎜
    3. 🎜mysqli_fetch_array() データの行を [関連付け] ] 配列および [インデックス] 配列として取得します。 return🎜
    🎜結果セット内のデータの行数をカウントします 🎜構文: mysqli_num_rows(result set); 🎜通常、結果セットにデータがあるかどうかを判断するために使用されます。0 より大きい場合はデータがあることを意味し、0 に等しい場合はデータが存在することを意味します。 、データが存在しないことを意味します。 🎜rrreee🎜結果セットを解放し、結果セットが占有しているメモリ領域を解放します🎜 構文: mysqli_free_result(result set);🎜rrreee🎜4. データベース接続を閉じます。 🎜構文: mysqli_close (データベース接続識別子); 🎜 mysqli_close を使用してデータベース接続を閉じない場合、コードの実行が完了した後、デフォルトで PHP が自動的にデータベース接続を閉じます。 🎜rrreee🎜5. その他の使用法🎜🎜エラー メッセージ 🎜構文: mysqli_error (データベース接続識別子); 🎜通常、エラーのデバッグと表示に使用されます🎜rrreee🎜Get挿入したばかりのデータの ID 🎜 構文: mysqli_insert_id (データベース接続 ID);🎜🎜6. プロジェクトの文字エンコーディング🎜🎜MySQL 文字セット 🎜 MySQL データは最終的にデータベース、テーブル、レコードに保存されます。 🎜データが実際に保存されるとき、次のいくつかの場所の影響を受けます。 🎜
    • 🎜フィールドのエンコーディング🎜
    • 🎜フィールドのエンコーディングtable🎜
    • 🎜ライブラリのエンコーディング🎜
    • 🎜MySQLサーバーの組み込みエンコーディング🎜
    🎜フィールドにエンコーディングが設定されている場合、保存されたデータフィールドエンコーディングの対象となります。 🎜フィールドにエンコーディングが設定されていない場合は、テーブルのエンコーディングが優先されます。 🎜 テーブルにエンコーディング セットがない場合は、ライブラリに設定されているエンコーディングが優先されます。 🎜ライブラリがエンコーディングを設定しない場合は、MySQL サーバーの組み込みエンコーディングが優先されます。 🎜🎜上記のエンコーディングはサーバーによって決定されます。設定する必要があるのは、データベース、テーブル、フィールドのエンコーディングのみです。 🎜🎜クライアント側で表示されるデータのエンコーディング🎜 4 つの場所がクライアントの表示に影響します🎜
    1. 🎜 に保存されるデータのエンコーディングサーバー側🎜
    🎜次の 3 つはクライアントに関連します🎜
    1. 🎜クライアントからサーバーに送信されるデータのエンコーディング🎜サーバー変数(設定項目):< code>character_set_client🎜
    2. 🎜クライアントとサーバー間の接続層で使用されるエンコーディング🎜サーバー変数 (設定項目): character_set_connection</code >🎜</li> <li>🎜サーバーからクライアントに送信される処理結果のデータエンコード🎜サーバー変数(設定項目): <code>character_set_results🎜

    可以使用 show variables like &#39;char%&#39;; 在MySQL命令行模式下查看相关变量。
    可使用 set指令单独设置,如:set character_set_results=utf8;

    set names 是一个快捷操作,同时设置了以上三个服务器变量(配置项),当使用set names utf8;时,相当于

    set character_set_client=utf8;
    set character_set_connection=utf8;
    set character_set_results=utf8;
    ログイン後にコピー
    ログイン後にコピー

    项目中确保字符编码五个地方统一

    1. MySQL数据库服务器保存数据的编码

    2. 设置php与MySQL交互层编码 mysqli_query($conn, 'set names utf8');

    3. PHP与浏览器之间交互的编码 header("Content-type:text/html;charset=utf-8");

    4. HTML meta 标签声明使用编码 <meta charset="UTF-8">

    5. PHP文件保存的编码(在编辑器中设置)

    更多mysql相关知识请关注php中文网mysql视频教程频道

    相关推荐:

    PHP操作JSON方法大全

    PHP操作MongoDB实现增删改查功能

    【mysql视频教程】2019年最火的5个mysql视频教程推荐

    以上がPHP 操作 MySQLの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート