Прежде всего, не используйте переменные в строке. Вы используете PDO, поэтому вместо этого используйте подготовленные операторы.
Также, если я правильно понял, вам нужна функция "LOWER" для строки, которую вы ищете, верно? в этом случае используйте функцию PHP "strtolower" один раз и присвойте эту переменную SQL выражение
$searchData= strtolower("{Some_text_to_search}");
$searchDataStartMatch = "%".$searchData;
$searchDataEndMatch = $searchData."%";
$searchDataBothMatch = "%".$searchData."%";
$sql="SELECT * FROM food WHERE Food_Name like ? OR Food_Description LIKE ?
ORDER BY CASE WHEN Food_Name=? or Food_Description = ? THEN 0
WHEN Food_Name like ? or Food_Description LIKE ? THEN 1
WHEN Food_Name like ? or Food_Description LIKE ? THEN 2
WHEN Food_Name like ? or Food_Description LIKE ? THEN 3
ELSE 4
END";
$statement=$conn->prepare($sql);
$statement->execute([
$searchDataBothMatch,$searchDataBothMatch
$searchData,$searchData,
$searchDataEndMatch,$searchDataEndMatch,
$searchDataBothMatch,$searchDataBothMatch,
$searchDataStartMatch,$searchDataStartMatch
]);
$results = $statement->fetchAll();
отредактировано
, если вы хотите l oop сверх результатов замените
$ results = $ Statement-> fetchAll ();
на:
$result = [];
while($row = $statement->fetch()){
// your logic here
$result[] = $row;
}
Если вы не можете или не можете хотите использовать подготовленные государственные деятели, тогда сделайте так:
$starString= strtolower("{Some_text_to_search}");
$searchData = $conn->quote($starString);
$searchDataStartMatch = $conn->quote("%".$starString);
$searchDataEndMatch = $conn->quote($starString."%");
$searchDataBothMatch = $conn->quote("%".$starString."%");
$sql="SELECT * FROM food WHERE Food_Name like {$searchDataBothMatch} OR Food_Description LIKE {$searchDataBothMatch}
ORDER BY CASE WHEN Food_Name={$searchData} or Food_Description = {$searchData} THEN 0
WHEN Food_Name like {$searchDataEndMatch} or Food_Description LIKE {$searchDataEndMatch} THEN 1
WHEN Food_Name like {$searchDataBothMatch} or Food_Description LIKE {$searchDataBothMatch} THEN 2
WHEN Food_Name like {$searchDataStartMatch} or Food_Description LIKE {$searchDataStartMatch} THEN 3
ELSE 4
END";
$statement=$conn->query($sql);
$result = [];
while($row = $statement->fetch()){
// your logic here
$result[] = $row;
}