問題:
ユーザーがアクセスできる検索フォームがあります。学生 ID、名前、専攻、大学などの複数の検索パラメータを入力します。これらのパラメータを任意に組み合わせて学生を検索できるようにしたいと考えています。
回答:
複数のパラメータを使用した検索を有効にするには、SQL WHERE 句に基づいて動的に構築します。によって入力されたパラメータに基づいて、 user.
解決策:
PHP の PDO を使用する (推奨方法):
$wheres = []; $params = []; if (!empty($_GET['id'])) { $wheres[] = 'a.uid = :uid'; $params[':uid'] = $_GET['id']; } if (!empty($_GET['major'])) { $wheres[] = 'a.major = :major'; $params[':major'] = $_GET['major']; } if (!empty($_GET['name'])) { $wheres[] = 'b.name LIKE :name'; $params[':name'] = '%'.$_GET['name'].'%'; } // ...continue for additional parameters $sql = "SELECT * FROM user_details AS a JOIN user AS b ON a.uid = b.id"; if (!empty($wheres)) { $sql .= " WHERE " . implode(' AND ', $wheres); } $stmt = $db->prepare($sql); $stmt->execute($params);
既存の MySQLi アプローチを変更する:
$sql = "SELECT * FROM user_details a, user b WHERE a.uid = b.id"; if (!empty($_GET['id'])) { $sql .= " AND a.uid = '" . $_GET['id'] . "'"; } if (!empty($_GET['major'])) { $sql .= " AND a.major = '" . $_GET['major'] . "'"; } if (!empty($_GET['name'])) { $sql .= " AND b.name LIKE '%" . $_GET['name'] . "%'"; } // ...continue for additional parameters $result = mysqli_query($db, $sql);
以上がPHP で複数の検索パラメータを含む検索フォームを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。