この記事では、PHP+MariaDBのデータベース操作の基本スキルを中心に、PHP+MariaDBのデータベース接続や判断方法、ユーザーのログイン、管理、削除などの実装スキルや注意事項を事例を交えてまとめて紹介しています。 PHP+MariaDB に基づいた操作を友人が参照できるようにする必要があります
この記事の例は、PHP+MariaDB データベース操作の基本的なスキルをまとめたものです。詳細は次のとおりです:
PHP + MySQL は比較的一般的な組み合わせです。私は主観的に Oracle が好きではありませんが、MySQL がそれに買収されてから、私の骨の髄までいくつかの変化が生じました。ということで、MySQL の元々のオープンソースの信念を今でも堅持している MariaDB Brothers に変更しました。これらは本質的に MySQL の中核であるため、以下のデータベース オペレーション コードはすべて MySQL で直接使用できます。
PHP+Apache の基本環境をセットアップし、夜間に MySQL データベースをインストールした後、最も単純なデータベース接続コードを作成しました。結果は次のような典型的なエラーでした: 致命的なエラー: クラス 'mysqli' が見つかりません
<?php $db = new mysqli('localhost', 'root', 'admin', 'test'); if (mysqli_connect_errno()) { echo '<p>' . 'Connect DB error'; exit; } ?>
実際、この問題は比較的単純です。PHP エンジンから返されるエラーから、問題のほとんどは php.ini ファイルの設定で発生していることがわかります。 =php_mysqli.dll" この設定項目の前にあるデフォルトのセミコロンは削除されません。私はこの間違いを犯しませんでした。PHP インストール パスの ext ディレクトリにもファイル php_mysqli.dll がありました。それでは、どこで問題が発生したのでしょうか。 php.ini ファイル内の間違った場所で問題が引き続き発生するはずです。少し読んだところ、「extension_dir = "ext"」が変更されていないことがわかりました。当時はあまり考えず、PHP エンジンがこの相対パスを自動的に見つけてくれると思っていました。しかし、よく考えてみると、PHP エンジンは Apache によって読み込まれており、Apache はこの相対関係を知りません。あるいは正直ここを絶対パスに変更すればOKです。実際、このコードの前にこのコードを記述して、mysqli コンポーネントがロードされているかどうかを確認することができます。この方法は、他のコンポーネントの事前ロード判定に適しています。
if (extension_loaded('mysqli')) { echo 'yes'; } else { echo 'no'; }
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 '', `password` varchar(32) NOT NULL default '', PRIMARY KEY (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
<?php $username = $_POST['username']; $password = $_POST['password']; $db = new mysqli('localhost', 'root', 'admin', 'test'); if (mysqli_connect_errno()) { echo '<p>' . 'Connect DB error'; exit; } $query = "select * from tbl_user where username = '" . $username . "'"; echo '<p>' . $query; $result = $db->query($query); if ($result) { echo '<p>' . 'The user '. $username .' exist'; echo '<p>' . '<a href="register.html" rel="external nofollow" rel="external nofollow" >Back to register</a>'; } else { $query = "insert into tbl_user values ('". $username ."', '". $password ."')"; echo '<p>' . $query; $result = $db->query($query); if ($result) { echo '<p>' . '<a href="register.html" rel="external nofollow" rel="external nofollow" >Register successful</a>'; } } ?>
<?php $username = $_POST['username']; $password = $_POST['password']; $db = new mysqli('localhost', 'root', 'admin', 'test'); if (mysqli_connect_errno()) { echo '<p>' . 'Connect DB error'; exit; } $query = "select * from tbl_user where username = '" . $username . "' and password = '" . $password . "'"; echo '<p>' . $query; $result = $db->query($query); if ($result->num_rows) { echo '<p>' . '<a href="login.html" rel="external nofollow" rel="external nofollow" >Login successful</a>'; } else { echo '<p>' . '<a href="login.html" rel="external nofollow" rel="external nofollow" >Login failed</a>'; } ?>
りー
4ページの最終的なディスプレイ効果は、ユーザーコードを削除しますページは以下のとおりです (bookadd.html):
2. テーブル作成スクリプトは次のとおりです:
<?php $db = new mysqli('localhost', 'root', 'admin', 'test'); if (mysqli_connect_errno()) { echo '<p>' . 'Connect DB error'; exit; } echo '<p>' . 'All user as follows:'; $query = "select * from tbl_user order by username"; if ($result = $db->query($query)) { while ($row = $result->fetch_assoc()) { echo '<p>' . 'Username : ' . $row['username'] . ' <a href="userdelete.php?username=' . $row['username'] . '" rel="external nofollow" >delete</a>'; } } ?>
3. 追加されたロジック処理コードは次のとおりです (bookadd_do.php)。ここで特に注意する必要があるのは、この文「$db->query("set names utf-8")
」は、データベースにデータを書き込むときに、utf-8 エンコードとデコードを行うことを意味します。データベーステーブルの動作を表示するために使用します。中国語の文字化けを防ぐコーデックを設定します。この技術的な点については、後ほど詳しく記事にします。
<?php $username = $_GET['username']; $db = new mysqli('localhost', 'root', 'admin', 'test'); if (mysqli_connect_errno()) { echo '<p>' . 'Connect DB error'; exit; } $query = "delete from tbl_user where username = '" . $username . "'"; echo $query; if ($result = $db->query($query)) { echo '<p>' . 'Delete user ' . $username . ' successful'; } else { echo '<p>' . 'Delete user ' . $username . ' failed'; } echo '<p>' . '<a href="userlist.php" rel="external nofollow" >Back to user list</a>'; ?>
4. 書籍情報を表示するロジックコードは次のとおりです。「$db->query("set names utf-8")
」という文にも注目してください。 :
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;
さて、ここには PHP エンジンが提供する非常に便利なデータベース操作方法が記載されていますが、開発は決してそうではありません。さまざまな例外をキャッチして処理する方法については、慎重に検討する必要があります。データベース設計も非常に興味深いトピックです。
関連する推奨事項: $db->query("set names utf-8")
”,代表向数据库写入数据时,采用utf-8编解码,显示的对数据库表操作的编解码进行设置,以防止中文的乱码。后面我会专门针对这个技术点记录一篇文章。
<?php $isbn = $_POST['isbn']; $title = $_POST['title']; $author = $_POST['author']; $price = $_POST['price']; $db = new mysqli('localhost', 'root', 'admin', 'test'); if (mysqli_connect_errno()) { echo '<p>' . 'Connect DB error'; 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 '<p>' . 'Affect rows is ' . $stmt->affected_rows; echo '<p>' . '<a href="booklist.php" rel="external nofollow" >Go to book list page</a>'; ?>
4、显示图书信息的逻辑代码如下,同样注意这句话“$db->query("set names utf-8")
PHP pdo ベースのデータベース操作クラス [mysql、sqlserver、oracle をサポート可能]
以上がPHP+MariaDBデータベース操作の基礎スキルまとめメモの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。