Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 28.06.2021
Сообщений: 45

prepare statement

02.08.2022, 19:20. Показов 519. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подготовленное выражение возвращает FALSE, а должно объект. Подключение к БД норм, таблица создана, и несколько строк в нее уже записано таким способом:
PHP
1
2
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
а вот такое выражение возвращает FALSE:
PHP
1
2
3
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
echo $stmt == FALSE; //1
$stmt->bind_param("sss", $firstname, $lastname, $email);
от последней строки вылетает ошибка
Fatal error: Uncaught Error: Call to a member function bind_param() on bool in D:\Backend\MySQL\index.php:94 Stack trace: #0 {main} thrown in D:\Backend\MySQL\index.php on line 94
что я делаю не так?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.08.2022, 19:20
Ответы с готовыми решениями:

Prepare statement и хранимые процедуры
Вот обьясните пожалуйста(гугл читал... не осилил не много) Зачем в хранимой процедуре использовать prepare, если все параметры можно...

PDO и prepare по переменной
Добрый день, уже час бьюсь над проблемой и никак не могу решить, как получить значение из таблицы, где поле login = $login ? <?php...

Не работает PDO::prepare
Не заполняется таблица.Подскажите пожалуйста в чем беда??((Ошибку не выдает-просто пустая таблица и все.. Если делаю не подготовленный...

4
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.08.2022, 20:09
После prepare сделайте
PHP
1
var_dump($conn->error);
И увидите подробности об ошибке. Скопируйте её сюда.
0
3 / 3 / 0
Регистрация: 28.06.2021
Сообщений: 45
03.08.2022, 02:06  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Скопируйте её сюда.
string(52) "Commands out of sync; you can't run this command now"

Кажется нашла из-за чего ошибка. В этом файле выше по коду был множественный вызов
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Phil', 'Linn', 'pl@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Lorein', 'Pizutty', 'lp@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Mary', 'Smith', 'ms@example.com')";
 
if ($conn->multi_query($sql) === TRUE) {
    echo "New records created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
закомментировала эти строки - ошибка ушла. Раскомментировала - ошибка вернулась.
Теперь я не понимаю почему они друг другу мешают. БД не успевает отработать?

Добавлено через 23 минуты
кажется нашла и для этого решение: после мульти-вызова нужно в цикле прокрутить $conn->next_result() пока буфер не очистится. Действительно - помогло. Вообще в сети народ не советует юзать мультивызов, лучше prepare statement. Правильно?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
03.08.2022, 05:37
Цитата Сообщение от Tatiana_Sn Посмотреть сообщение
в сети народ не советует юзать мультивызов, лучше prepare statement. Правильно?
Если в запрос нужно подставлять значения, то, конечно, prepared statements предпочтительнее использования $conn->real_escape_string.

Если значения подставлять не нужно, то можно и multi_query использовать (хотя я не сталкивался с ситуациями, когда в этом была необходимость).
1
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,882
03.08.2022, 08:29
Для подстановки, например, числовых значений, даже если они получены от пользователя, вполне можно использовать и обычные запросы. Даже экранировать не обязательно. Можно проверить по формату. Такая проверка позволяет даже не пытаться выполнять запрос, когда входные данные ошибочны.

Tatiana_Sn, многострочную вставку можно делать одним запросом

Для показанных данных (как я понимаю, первая тройка записей - это просто тестовая вставка) использование подготовленных выражений будет хорошим решением. Но я бы все равно заранее профильтровал хотя бы по длине строки.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2022, 08:29
Помогаю со студенческими работами здесь

PDO bindValue и prepare
Всем привет. Никак не могу понять, в чем ошибка ... Не могу совместить prepare и bindValue. ( Наверно сейчас не совсем понятно, лучше тогда...

Динамически prepare в PDO
Здравствуйте. Что-то никак не соображу. Старый наверное стал - как динамически создавать запросы? Входные данные в виде массива могут...

Добавление в базу данных prepare
Доброго всем, Проблемка возникла с добавлением в БД try{ $sql = &quot;INSERT INTO `foto` (`src`, `id_post`) VALUES...

PDO prepare Не получается выборка из базы
Доброго времени суток! Пытаюсь переделать запросы для защиты от sql инъекций, но ни чего в это не понимаю.. Помогите разобраться.. На...

Call to a member function prepare() on a non-object
Собственно ошибка Fatal error: Call to a member function prepare() on a non-object in /var/www/legion/reg.php on line 75 Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru