내가하려는 것은 이와 유사합니다. 내 드롭 다운에 성별과 종교를 선택하면 Search Filtering with PHP/MySQL필터 데이터 pdo
<?php
require 'con.php';
$minage = $_POST['data'][0];
$maxage = $_POST['data'][1];
$gender = $_POST['data'][2];
$religion = $_POST['data'][3];
$query = "SELECT CONCAT(firstname, ' ', middlename, ' ', lastname, ' ', extension_name) as fullname, TIMESTAMPDIFF(YEAR, birthday ,NOW()) as age FROM mytable";
$filter = array();
if($gender != -1){
$gender = substr($gender, 1, -1);
$filter[] = "gender = :gender";
}
if($religion != -1){
$filter[] = "religion = :religion";
}
if(count($filter) > 0){
$query .= " WHERE " . implode(' AND ', $filter);
$sql = $connection->prepare($query);
-> $sql->bindParam(':gender', $gender, PDO::PARAM_STR);
-> $sql->bindParam(':religion', $religion, PDO::PARAM_STR);
$sql->execute();
$res = $sql->fetchAll();
}else{
$sql = $connection->prepare($query);
$sql->execute();
$res = $sql->fetchAll();
}
?>
<?php foreach($res as $row): ?>
<div><?php echo $row['fullname'];?></div>
<?php endforeach; ?>
는, 결과는 괜찮습니다. 어디 $sql->bindParam(...);
을 배치하는 나는 조금 혼란 스러워요
number of bound variables does not match number of tokens
:
하지만 하나를 선택할 때의 성별 말을하자, 나는 오류가 발생했습니다. 이게 내 오류의 원인이라고 생각해? 또는 '오류'가 더 있거나 올바르지 않은 것이있는 경우 수정하십시오. 미리 감사드립니다.
@ your-common-sense의 대답에서 배우십시오. 그러면 코드가 더 읽기 쉽고 이해하기 쉬울 것입니다. – cske