У меня есть очень простая форма поиска, которая берет термин из GET_, а затем включает его в SQL-запрос. Я пытаюсь использовать эту строку из GET в параметризованном запросе, например так:
$searchString = '%' . $searchString . '%';
$recordsQuery = "SELECT username, firstname, lastname FROM $table WHERE lastname = $searchString" . $max;
if ($getRecords = $con->prepare($recordsQuery)) {
$getRecords->bind_param("s", $searchString);
$getRecords->execute();
$getRecords->bind_result($username, $firstname, $lastname);
$rows = array();
while ($getRecords->fetch()) {
$row = array(
'username' => $username,
'firstname' => $firstname,
'lastname' => $lastname,
);
$rows[] = $row;
}
return $rows;
}
Однако это приводит к ошибке
Неизвестный столбец 'term' в 'where clause'.
Я предполагаю, что это потому, что мой термин не заключен в кавычки, однако добавление экранированных кавычек к переменной ничего не сделало.
Любые синтаксические ошибки или тому подобное являются продуктом модификации, чтобы задать этот вопрос, и не существуют в моем коде actaul.
ОК, я исправил это, изменив следующие строки:
$searchstring = "'" . $searchstring . "'";
$recordsQuery = "SELECT username, firstname, lastname FROM $table WHERE lastname = $searchString" . $max;
Я уверен, что этот подход, вероятно, плох, потому что он не параметризирован ..., но я не смог заставить его работать каким-либо другим способом.