Я пытаюсь получить параметризованный запрос работает со следующим кодом:PHP Mysqli bind_params не работает
$stmt = $mysqli->prepare("SELECT formattributes.id as attr_id, forms.title as form_title, formattributes.label as attr_label, formattributes.description as attr_description FROM formattributes
INNER JOIN forms ON forms.id = formattributes.form_id WHERE forms.title LIKE '%?%'");
$stmt->bind_param('s', $search);
$search = $_GET['search'];
$stmt->execute();
$result = $stmt->get_result();
Однако после выполнения запроса я проверил мою general_log таблицы в моей базе данных MySQL и запрос просто не изменилась:
SELECT formattributes.id as attr_id, forms.title as form_title, formattributes.label as attr_label, formattributes.description as attr_description FROM formattributes
INNER JOIN forms ON forms.id = formattributes.form_id WHERE forms.title LIKE '%?%'
EDIT:
Наконец получил он работает со следующим кодом:
$param = "%{$_POST['search']}%";
$stmt = $mysqli->prepare("SELECT formattributes.id as attr_id, forms.title as form_title, formattributes.label as attr_label, formattributes.description as attr_description FROM formattributes
INNER JOIN forms ON forms.id = formattributes.form_id WHERE forms.title LIKE ?");
$stmt->bind_param('s', $param);
$stmt->execute();
$result = $stmt->get_result();
Спасибо всем за помощь!
Что касается как я знаю, t он не должен быть заключен в кавычки ('' ') –
Вы также связываете' $ search' с инструкцией перед ее инициализацией ... и вам не нужно инициализировать/дезинформировать новую переменную при использовании связанный параметр '$ stmt-> bind_param ('s', $ _GET ['search'])' должен, вероятно, сделать это (если вы никогда не проходите 'search []' как GET var), если вам не нужно что-то вроде '$ search = "% {$ _ GET ['search']}%"; ' – CD001
$stmt->bind_param('s', $_GET['search'])
не работал. С помощью скобок вокруг него он работал. –