Ich versuche in einer Datenbank mit mehreren Suchparametern zu suchen. Allerdings bekomme ich immer die ganze Tabelle als Ausgabe. Der Benutzer soll ein oder mehrere Felder in einem HTML-Formular ausfüllen. Nachdem das Formular abgeschickt wurde, sollten nur Einträge angezeigt werden, die den Benutzerparametern entsprechen. Es hat gut funktioniert, als ich nur einen Parameter hatte.PDO Datenbanksuche mit mehreren Parametern
Dies ist mein Code:
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();
}
}
Sie nicht lesen das Handbuch korrekt auf vorbereitete Anweisungen –
Sollte Ihr nicht '$ sein sql' referenziert bindet wie ': lastName' anstelle der Variable' $ lastName'? Warum sonst mit einer vorbereiteten Aussage belästigen? Auch ... warum deklarieren Sie Variablen wie '$ lastName' nach Ihrer' SELECT' Anweisung, wo sie zuerst verwendet werden? –
nächste Zeit, RTM http://php.net/manual/en/pdo.prepared-statements.php –