Я знаю, что на это уже был дан ответ, какова фактическая проблема, однако я хочу предложить простой обходной путь.
Я хотел использовать метод get_results (), однако у меня не было драйвера , и я не где-то, я могу добавить это. Итак, прежде чем я позвонил
$stmt->bind_results($var1,$var2,$var3,$var4...etc);
, я создал пустой массив и просто привязал результаты как ключи в этом массиве:
$result = array();
$stmt->bind_results($result['var1'],$result['var2'],$result['var3'],$result['var4']...etc);
, чтобы эти результаты могли быть легко переданы в методы или переданы объекту для дальнейшего использования.
Надеюсь, это поможет любому, кто хочет сделать что-то подобное.
У вас есть пара проблем с вашим кодом:
SELECT
вы ищете значения в текстовых столбцах (TEXT
, VARCHAR
и т. Д.). Для этого необходимо добавить одинарные кавычки в критерии поиска, так как вы хотите указать текстовый литерал. Поэтому WHERE title={}
должно быть WHERE title='{}'
(то же самое относится и к другим параметрам). search(title='test2')
запустит поиск записи, где столбец title
имеет значение 'test2'
или любой из трех других столбцов (author
, year
и isbn
) имеет пустой текст , Если вы решили искать заголовок 'test2'
, это будет работать только в том случае, если ни один из других столбцов не будет когда-либо содержать пустой текст. И даже в этом случае из-за трех OR
операторов в вашем запросе производительность будет низкой. Вместо этого вам следует оценить каждый параметр индивидуально и построить запрос только с непустыми параметрами.