私は、フィードバックフォームのテーブルからレコードのリストを選択する機能を持っています。PDOは、SQLクエリ文字列を書き直さずにオプションのバインドパラメータを持つ
$sql = "SELECT * FROM `feedback` WHERE course_id = :course_id AND user_id = :user_id LIMIT 1";
$stmt = $this->ci->db->prepare($sql);
$result = $stmt->execute([
"course_id" => $course_id,
"user_id" => $user_id
]);
$results = $stmt->fetch(PDO::FETCH_ASSOC);
私はこのように、ユーザIDはオプションであることを確認したいがないことを確認はどのように最も効率的にそれを書くために:コースのIDとユーザーIDは、現時点ではクエリが両方に基づいていますか?
if ($user_id) {
$sql = "SELECT * FROM `feedback` WHERE course_id = :course_id AND user_id = :user_id LIMIT 1";
$stmt = $this->ci->db->prepare($sql);
$result = $stmt->execute([
"course_id" => $course_id,
"user_id" => $user_id
]);
} else {
$sql = "SELECT * FROM `feedback` WHERE course_id = :course_id LIMIT 1";
$stmt = $this->ci->db->prepare($sql);
$result = $stmt->execute([
"course_id" => $course_id,
]);
}
$results = $stmt->fetch(PDO::FETCH_ASSOC);
をしかし、それは非常に非効率です:
例えば、私はこのような何かを行うことができます。問題は、"user_id" => $user_id
(コードの最初のブロック)を省略すると、バインドされたパラメータの数が一致しないため、私の$sql
が無効であるということです。
この場合の最善の方法は何ですか?
をあなたはすでにここhttp://stackoverflow.com/questions同じ質問をしませんでした/ 40525986/php-array-a-pdo-search-query- –
本当にそうではありません。配列をループするときに 'LIKE'と' = '条件を使うことについての質問です。本当に全く違う。 – Andy