PHP プログラムでは、データベース内のデータを頻繁にクエリする必要があります。その中で、一般的な操作は、フィールドに特定の値が含まれているかどうかをクエリすることです。これを行うには、SQL ステートメントで LIKE 条件を使用します。以下に詳細なサンプルコードを示します。
users という名前のテーブルがあり、hobby という名前のフィールドがあるとします。フィールドに文字列「PHP」が含まれているかどうかをクエリする必要があります。次の SQL ステートメントを使用できます。
SELECT * FROM users WHERE hobbies LIKE '%PHP%';
PHP では、PDO 拡張機能を使用してデータベースに接続し、この SQL ステートメントを実行します。以下は、PDO を使用してデータベースに接続するサンプル コードです。
// 1. 配置数据库信息 $dbhost = 'localhost'; $dbname = 'testdb'; $dbuser = 'root'; $dbpassword = ''; // 2. 连接到数据库 $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpassword); // 3. 设置错误处理方式为异常 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 4. 准备 SQL 语句 $sql = "SELECT * FROM users WHERE hobbies LIKE '%PHP%'"; // 5. 执行 SQL 语句并获取结果集 $stmt = $dbh->query($sql); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); // 6. 处理结果集 foreach ($results as $row) { echo $row['username'] . ' likes PHP. <br>'; } // 7. 关闭数据库连接 $dbh = null;
上記のコードでは、最初にデータベース情報を構成し、次に PDO を使用してデータベースに接続します。次に、プログラムをデバッグできるように、PDO のエラー処理モードを例外に設定します。次に、SQL ステートメントを使用してデータベースにクエリを実行し、結果セットを取得します。最後に、foreach ループを使用して結果セットを処理し、ユーザー名を出力します。
PDO を使用してデータベースにクエリを実行する場合、SQL インジェクション攻撃を防ぐためにパラメータ化されたクエリを使用する必要があることに注意してください。以下は、パラメーター化されたクエリを使用したサンプル コードです。
// 搜索的字符串 $search = 'PHP'; // 1. 配置数据库信息 $dbhost = 'localhost'; $dbname = 'testdb'; $dbuser = 'root'; $dbpassword = ''; // 2. 连接到数据库 $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpassword); // 3. 设置错误处理方式为异常 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 4. 准备 SQL 语句 $sql = "SELECT * FROM users WHERE hobbies LIKE :search"; $stmt = $dbh->prepare($sql); // 5. 绑定参数并执行 SQL 语句 $searchParam = '%' . $search . '%'; $stmt->bindParam(':search', $searchParam); $stmt->execute(); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); // 6. 处理结果集 foreach ($results as $row) { echo $row['username'] . ' likes PHP. <br>'; } // 7. 关闭数据库连接 $dbh = null;
上記のコードでは、パラメーター化されたクエリとバインド パラメーターを使用して、SQL インジェクション攻撃を防ぎます。 PDO の prepare() メソッドを通じて SQL ステートメントを準備し、変数をパラメーターにバインドします。 SQL ステートメントを実行するときは、パラメーター変数の値を渡すだけでデータベースに安全にクエリを実行できます。
つまり、SQL ステートメントの LIKE 条件と PDO 拡張機能を使用すると、フィールドの値を簡単にクエリできます。同時に、プログラムのセキュリティを確保するために、常にパラメーター化されたクエリを使用して SQL インジェクション攻撃を防ぐ必要があります。
以上がPHPでフィールドの値をクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。