-1
여러 검색 매개 변수로 데이터베이스를 검색하려고합니다. 그러나, 나는 항상 전체 테이블을 출력으로 얻는다. 사용자는 HTML 양식에서 하나 이상의 필드를 채우기로되어 있습니다. 양식을 제출 한 후 사용자 매개 변수와 일치하는 항목 만 표시해야합니다. 하나의 매개 변수 만 가지고도 잘 작동했습니다. 당신은, 당신은 문자열 연결을 사용하는 쿼리에 매개 변수를 사용하지 않는여러 매개 변수가있는 PDO 데이터베이스 검색
if (isset($_POST['submit']))
{
try
{
require "../config.php";
require "../common.php";
$connection = new PDO($dsn, $username, $password, $options);
$sql = "SELECT *
FROM medisGO_patient
WHERE lastName LIKE '%" . $lastName . "%'
AND firstName LIKE '%" . $firstName . "%'
AND birthday LIKE '%" . $birthday . "%'
AND course LIKE '%" . $course . "%'
AND id LIKE '%" . $no . "%'";
$lastName = trim($_POST['lastName']);
$firstName = trim($_POST['firstName']);
$course = trim($_POST['course']);
$birthday = trim($_POST['birthday']);
$no = trim($_POST['no']);
$statement = $connection->prepare($sql);
$statement->bindParam(':lastName', $lastName, PDO::PARAM_STR);
$statement->bindParam(':firstName', $firstName, PDO::PARAM_STR);
$statement->bindParam(':birthday', $birthday, PDO::PARAM_STR);
$statement->bindParam(':course', $course, PDO::PARAM_STR);
$statement->bindParam(':id', $no, PDO::PARAM_STR);
$statement->execute();
$result = $statement->fetchAll();
}
catch(PDOException $error)
{
echo $sql . "<br>" . $error->getMessage();
}
}
당신이 –
이'$ 될 sql' 안 준비된 문에 제대로 설명서를 읽어 보지 않았 '$ lastName' 대신': lastName'과 같은 바인드를 참조합니까? 그렇지 않으면 왜 준비된 성명서를 귀찮게합니까? 또한 ... 왜'$ lastName'과 같은 변수를 처음 사용되는'SELECT' 문 다음에 선언하고 있습니까? 다음 번에 –
, RTM http://php.net/manual/en/pdo.prepared-statements.php –