ホームページ >バックエンド開発 >PHP7 >PHP 7でCRUD操作(作成、読み取り、更新、削除)を実行する方法は?

PHP 7でCRUD操作(作成、読み取り、更新、削除)を実行する方法は?

Robert Michael Kim
Robert Michael Kimオリジナル
2025-03-10 16:47:21250ブラウズ

PHP 7でCRUD操作(作成、読み取り、更新、削除)を実行する方法

PHP 7でCRUD(作成、読み取り、更新、削除)の実行には、通常、データベースとの対話が含まれます。 例としてMySQLを使用することを説明しましょうが、原則は適切なドライバー調整を備えた他のデータベースシステムに適用されます。セキュリティと効率のために準備されたステートメントを使用します。データベース接続の確立:

最初に、データベースに接続する必要があります。 これには、通常、MySQLI拡張機能(またはPDO、より汎用性の高いオプション)を使用することが含まれます。作成(挿入):

新しいレコードを挿入するには、SQL注入の脆弱性を防ぐために準備されたステートメントを備えた挿入クエリを使用します。読み取り(select):

<code class="php"><?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database_name";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
?></code>
データを取得するには、選択クエリを使用します。 繰り返しになりますが、一貫性とベストプラクティスのために、Where句のユーザーサプライデータを使用していない場合でも、準備されたステートメントが推奨されます。更新(更新):

既存のレコードを変更するには、準備されたステートメントを使用して更新クエリを使用します。削除(削除):

レコードを削除するには、準備されたステートメントで削除クエリを使用してください。 (CSRF)。ここにいくつかのベストプラクティスがあります:
<code class="php"><?php
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $name, $email); // "ss" specifies two string parameters

$name = "John Doe";
$email = "john.doe@example.com";
$stmt->execute();

if ($stmt->affected_rows > 0) {
  echo "New record created successfully";
} else {
  echo "Error: " . $sql . "<br>" . $conn->error;
}
$stmt->close();
?></code>
  • 準備されたステートメント(パラメーター化されたクエリ): SQL注入を防ぐために、準備されたステートメント(上記のように)を常に使用します。 これにより、SQLコードがデータから分離され、悪意のある入力が中和されます。クエリで使用するか、ページに表示する前に、すべてのデータを検証およびサニタイズします。 xss攻撃を防ぐために、
  • のような関数を使用します。 データ型の検証には、適切なPHP関数(例:
  • )を使用します。 htmlコンテキストには、jsonコンテキストの場合はhtmlspecialchars()、および他のコンテキストの適切なエンコーディング関数を使用します。 セッションまたはトークンを使用して、ユーザー認証を管理します。 ユーザーの役割と許可に基づいてアクセスを制限します。is_numeric() filter_var()
  • https:
  • は、常にhttpsを使用して、クライアントとサーバー間の通信を暗号化します。これにより、輸送中のデータが保護されます。 htmlspecialchars()定期的なセキュリティ監査:json_encode()セキュリティの脆弱性については、コードを定期的に監査します。 静的な分析ツールと浸透テストを使用して弱点を特定して修正します。
  • 特殊文字の脱出:
  • 準備されたステートメントでも、ディスプレイを意図したデータの特殊文字を逃れることができます(検索分野など)。 ​​効率的なデータベースインタラクションには、データベースの負荷の最小化とクエリパフォーマンスの最適化が含まれます。ここにいくつかの戦略があります:
    • データベースインデックス作成:頻繁にクエリされた列にインデックスを作成して、選択したクエリを高速化します。データベースがクエリを実行する方法を理解するには、
    • (MySQL)または同様のツールを使用します。
    • ;代わりに、必要な列のみを選択します。EXPLAIN接続プーリング:SELECT *高トラフィックアプリケーションの場合、接続プーリングを使用してデータベース接続を再利用して、各リクエストの新しい接続を確立するオーバーヘッドを削減します。 多くのPHPデータベースライブラリはこれをサポートしています。
    • トランザクション:データベーストランザクションを使用して、特に単一の論理単位内で複数のCRUD操作を実行する場合のデータの一貫性を確保します。 1つの操作が失敗した場合、トランザクション全体をロールバックできます。
    • キャッシング:キャッシュは、データベースの負荷を削減するために頻繁にアクセスしました。 MemcachedやRedisなどのキャッシングメカニズムを使用します。
    • データベースの選択:
    • ストアドプロシージャ(特定のケースの場合):複雑な操作または頻繁に実行されるクエリの場合、ストアドプロシージャは、データベースサーバーのSQLコードを事前コンパイルすることでパフォーマンスを改善できます。データベースへの往復の数を減らすため。
      • sqlインジェクション:これは主要なセキュリティリスクです。 準備されたステートメントを使用して、それを防ぎます。 デバッグには、すべてのユーザー入力が正しくパラメーター化されるようにコードを慎重に確認することが含まれます。
      • データ型の誤った型:bind_param()PHPデータ型とデータベース列タイプの間のミスマッチは、エラーにつながる可能性があります。 データ型が一致するように、
      • コール(または選択したデータベースライブラリの同等物)を注意深く確認します。 SQLクエリを慎重に確認し、データベースシステムのツールを使用してエラーを分析します。
      • 接続エラー:データベースに接続する問題(間違った資格、ネットワークの問題、データベースサーバーダウン)が一般的です。 接続パラメーターとデータベースサーバーのステータスを確認します。
      • インデックスの欠落または誤ったインデックス:インデックスが欠落または不正確なクエリは、パフォーマンスの問題につながる可能性があります。 データベースツールを使用してクエリ実行プランを分析して、スロークエリを識別し、インデックスを最適化します。
      • エラー処理:エラー処理が不十分な場合は、デバッグを困難にする可能性があります。 必ずブロック(または同等の)を使用して、例外とログエラーを処理します。
      • :これらの関数を使用して、変数とデータ構造の値を検査します。try-catch
      • データベースデバッグツール:
      データベースシステムのデバッグツールを使用して、クエリ実行計画を調べ、クイリーのエラーを確認します。 (Xdebug):

      XDebugのようなPHPデバッガーを使用して、各ステップで変数を介して変数を検査します。 これにより、開発プロセスの早い段階でエラーをキャッチするのに役立ちます。

      特定の詳細とベストプラクティスについては、選択したデータベースシステムとPHPデータベースライブラリのドキュメントを必ず参照することを忘れないでください。

以上がPHP 7でCRUD操作(作成、読み取り、更新、削除)を実行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。