Для mysqli_query
нужны 2 параметра, как API PHP показывает с процедурной формой, которая у вас есть.
Итак, для этой части вызов должен выглядеть следующим образом:
$query = mysqli_query($connection, "SELECT * from employee WHERE fname LIKE
'%$searchq%' OR"
. "lname LIKE '%$searchq%") or die("failed");
Однако с запросом возникнут проблемы. Обратите внимание на эту часть запроса:
'%$searchq%' OR" <--- No space after the OR
. "lname LIKE '%$searchq%")
^--- No space before lname
Любой из этих двух областей требуется пробел.
Эта последняя часть строки запроса в конечном итоге будет выглядеть так:
'% $ searchq%' ORlname LIKE '% $ searchq%
^ --- проблема (без пробела) ^ --- и проблема здесь (без закрывающей одинарной кавычки)
Иногда бывает полезно установить запрос отдельно, чтобы вы могли повторить его, чтобы убедиться, что он синтаксически корректен в отношении расстояния между ключевыми словами, столбцами, значениями, использованием запятой (при необходимости), правильного цитирования и т. Д.
Рассмотрим эту разницу:
$query = "SELECT * from employee WHERE fname LIKE '%$searchq%' OR "
. "lname LIKE '%$searchq%'";
// query check (delete after validation, or comment-out)
echo $query;
$result = mysqli_query($connection, $query);
// I like to use $result, as the query call will return a result set with SELECT
// or false with failure. (though it can return true for other query types, see the api link)
Также может быть полезно вывести ошибку как часть сообщения die:
if (!$result) { // Doh! something wrong...
die('failed: ' . mysqli_error($connection));
} else {
$count = mysqli_num_rows($result); // check the result count
if ($count == 0) {
$output = 'No search results';
} else {
while ($row = mysqli_fetch_array($result)) { // fetch a row
$firstname = $row['fname'];
$lastname = $row['lname'];
$id = $row['id'];
$output .= '<div>' . $firstname . '' . $lname . '</div>';
echo "hi";
}
}
}
НТН