ホームページ > バックエンド開発 > PHPチュートリアル > PHP+MariaDBデータベース操作の基本スキル

PHP+MariaDBデータベース操作の基本スキル

jacklove
リリース: 2023-04-01 18:14:02
オリジナル
5179 人が閲覧しました

この記事では、PHP MariaDB データベース操作の基本スキルを中心に、PHP MariaDB をベースにしたユーザーログイン、管理、削除など、PHP MariaDB データベースの接続、判断、関連する操作実装スキルと注意事項をまとめ、分析しています。 MariaDB は、友達が参照できるようにするために必要です。

この記事の例は、PHP MariaDB データベース操作の基本的なスキルをまとめたものです。詳細は次のとおりです。

PHP MySQL は、主観的に Oracle があまり好きではないため、MySQL が Oracle に買収された後、いくつかの変更が加えられました。という問題が私の身に染みついたので、MySQL の元々のオープンソースの信念を今でも堅持している MariaDB を変更しました。これらは本質的に MySQL の中核であるため、以下のデータベース オペレーション コードはすべて MySQL で直接使用できます。

PHP Apache の基本環境をセットアップし、夜間に MySQL データベースをインストールした後、最も単純なデータベース接続コードを作成しました。その結果、次のような典型的なエラーが発生しました: 致命的エラー: クラス 'mysqli' not found

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
?>
ログイン後にコピー

実際、この問題は比較的単純です。PHP エンジンから返されたエラーから、mysqli がロードされていないことがわかります。ほとんどの問題は、php.ini ファイルの構成で発生しました。構成項目「extension=php_mysqli.dll」の前にあるデフォルトのセミコロンが削除されていませんでした。私はこの間違いを犯しませんでした。PHP インストール パスの ext ディレクトリにもファイル php_mysqli.dll がありました。それでは、どこで問題が発生したのでしょうか。 php.ini ファイル内の間違った場所で問題が引き続き発生するはずです。少し読んだところ、「extension_dir = "ext"」が変更されていないことがわかりました。当時はあまり考えず、PHP エンジンがこの相対パスを自動的に見つけてくれると思っていました。しかし、よく考えてみると、PHP エンジンは Apache によって読み込まれており、Apache はこの相対関係を知りません。あるいは正直ここを絶対パスに変更すればOKです。実際、このコードの前に次のようなコードを書くと、mysqli コンポーネントがロードされているかどうかを確認できます。この方法は、他のコンポーネントの事前ロード判定に適しています。

if (extension_loaded(&#39;mysqli&#39;))
{
  echo &#39;yes&#39;;
}
else
{
  echo &#39;no&#39;;
}
ログイン後にコピー

以下では、ユーザー登録とシステムログインを使用して、PHP MySQL の最も基本的な操作方法を記録します。

1. データベース、テーブル、ユーザーを作成します。

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE `test`
USE `test`;
DROP TABLE IF EXISTS `tbl_user`;
CREATE TABLE `tbl_user` (
 `username` varchar(32) NOT NULL default &#39;&#39;,
 `password` varchar(32) NOT NULL default &#39;&#39;,
 PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
ログイン後にコピー

2. 登録 HTML ページとログイン HTML ページ (それぞれ register.html と login.html) を作成します。以下の図に示すように:

3. 登録およびログイン コード:

register_do.php

<?php
  $username = $_POST[&#39;username&#39;];
  $password = $_POST[&#39;password&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "select * from tbl_user where username = &#39;" . $username . "&#39;";
  echo &#39;<p>&#39; . $query;
  $result = $db->query($query);
  if ($result)
  {
    echo &#39;<p>&#39; . &#39;The user &#39;. $username .&#39; exist&#39;;
    echo &#39;<p>&#39; . &#39;<a href="register.html" rel="external nofollow" rel="external nofollow" >Back to register</a>&#39;;
  }
  else
  {
    $query = "insert into tbl_user values (&#39;". $username ."&#39;, &#39;". $password ."&#39;)";
    echo &#39;<p>&#39; . $query;
    $result = $db->query($query);
    if ($result)
    {
      echo &#39;<p>&#39; . &#39;<a href="register.html" rel="external nofollow" rel="external nofollow" >Register successful</a>&#39;;
    }
  }
?>
ログイン後にコピー

#login_do.php

<?php
  $username = $_POST[&#39;username&#39;];
  $password = $_POST[&#39;password&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "select * from tbl_user where username = &#39;" . $username . "&#39; and password = &#39;" . $password . "&#39;";
  echo &#39;<p>&#39; . $query;
  $result = $db->query($query);
  if ($result->num_rows)
  {
    echo &#39;<p>&#39; . &#39;<a href="login.html" rel="external nofollow" rel="external nofollow" >Login successful</a>&#39;;
  }
  else
  {
    echo &#39;<p>&#39; . &#39;<a href="login.html" rel="external nofollow" rel="external nofollow" >Login failed</a>&#39;;
  }
?>
ログイン後にコピー

#userlist.php

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  echo &#39;<p>&#39; . &#39;All user as follows:&#39;;
  $query = "select * from tbl_user order by username";
  if ($result = $db->query($query))
  {
    while ($row = $result->fetch_assoc())
    {
      echo &#39;<p>&#39; . &#39;Username : &#39; . $row[&#39;username&#39;] . &#39;  <a href="userdelete.php?username=&#39; . $row[&#39;username&#39;] . &#39;" rel="external nofollow" >delete</a>&#39;;
    }
  }
?>
ログイン後にコピー

4. ページの最終的な表示効果は次のとおりです:

5. ユーザーを削除するコード:

userdelete。 php

<?php
  $username = $_GET[&#39;username&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "delete from tbl_user where username = &#39;" . $username . "&#39;";
  echo $query;
  if ($result = $db->query($query))
  {
    echo &#39;<p>&#39; . &#39;Delete user &#39; . $username . &#39; successful&#39;;
  }
  else
  {
    echo &#39;<p>&#39; . &#39;Delete user &#39; . $username . &#39; failed&#39;;
  }
  echo &#39;<p>&#39; . &#39;<a href="userlist.php" rel="external nofollow" >Back to user list</a>&#39;;
?>
ログイン後にコピー

前処理の準備

1. 書籍追加ページは以下のとおりです (bookadd.html)。

2. テーブル作成スクリプトは次のとおりです:

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE IF NOT EXISTS `test`;
USE `test`;
DROP TABLE IF EXISTS `tbl_book`;
CREATE TABLE IF NOT EXISTS `tbl_book` (
 `isbn` varchar(32) NOT NULL,
 `title` varchar(32) NOT NULL,
 `author` varchar(32) NOT NULL,
 `price` float NOT NULL,
 PRIMARY KEY (`isbn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf-8;
ログイン後にコピー

3. 追加されたロジック処理コードは次のとおりです (bookadd_do.php ): ここで特に注意が必要なのは、「

$db->query("set names utf-8")

」という文です。これは、データをデータベースでは、utf-8 エンコードとデコードが使用されており、中国語の文字化けを防ぐためのデータベース テーブル操作のエンコードとデコードの設定が表示されます。この技術的な点については、後ほど詳しく記事にします。

<?php
  $isbn = $_POST[&#39;isbn&#39;];
  $title = $_POST[&#39;title&#39;];
  $author = $_POST[&#39;author&#39;];
  $price = $_POST[&#39;price&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $db->query("set names utf-8"); //特别注意这句话
  $stmt = $db->stmt_init();
  $stmt->prepare("insert into tbl_book values (?,?,?,?)");
  $stmt->bind_param("sssd", $isbn, $title, $author, $price);
  $stmt->execute();
  echo &#39;<p>&#39; . &#39;Affect rows is &#39; . $stmt->affected_rows;
  echo &#39;<p>&#39; . &#39;<a href="booklist.php" rel="external nofollow" >Go to book list page</a>&#39;;
?>
ログイン後にコピー

4. 書籍情報を表示するロジックコードは次のとおりです。「

$db->query(」という文にも注目してください。名前を設定します utf- 8")

":

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $db->query("set names utf-8"); //特别注意这句话
  $stmt = $db->stmt_init();
  $stmt->prepare("select * from tbl_book");
  $stmt->bind_result($isbn, $title, $author, $price);
  $stmt->execute();
  while($stmt->fetch())
  {
    echo &#39;ISBN : &#39; . $isbn . &#39;<p>&#39;;
    echo &#39;Title : &#39; . $title . &#39;<p>&#39;;
    echo &#39;Author : &#39; . $author . &#39;<p>&#39;;
    echo &#39;Price : &#39; . $price . &#39;<p>&#39;;
    echo &#39;<p>&#39; . &#39;-----------------------------&#39; . &#39;<p>&#39;;
  }
?>
ログイン後にコピー

5 表示されるページは次のとおりです。

##ここでは最も基本的な部分を記録します。PHP エンジンは非常に便利なデータベース操作方法を提供しますが、開発は決して簡単ではありません。さまざまな例外をどのようにキャッチし、どのように処理するかを考慮する必要があります。データベース設計も非常に興味深いトピックです。

#興味があるかもしれない記事:

pdo に基づく PHP データベース操作クラス

PHPで実装されるmysqlの読み書き分離に関する内容


PHPは複数のファイルをzip形式に圧縮してローカルにダウンロードする方法を実装します



以上がPHP+MariaDBデータベース操作の基本スキルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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