Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Проблема с sql запросом
// 2. Perform database query
$query = "UPDATE subjects SET menu_name = '{$menu_name}', position = {$position}, visible = {$visible} WHERE id = {$id}";
Не пойму почему тут WHERE id = {$id}"; - php видит ошибку если в спецификации именно так и задается запрос
andrewkard
Отправлено: 02 Января, 2018 - 20:50:25
Участник
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Помог: 30 раз(а)
Перед тем как выполнить запрос, сделайте echo $query, возможно сразу все станет не место,
кроме того, полезно выполнить запрос, например в PMA (Добавление)
maxiiLYY пишет:
php видит ошибку если в спецификации именно так и задается запрос
а что пишет, какой текст ошибки?
maxiiLYY
Отправлено: 02 Января, 2018 - 21:06:06
Новичок
Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2018
Помог: 0 раз(а)
andrewkard пишет:
Перед тем как выполнить запрос, сделайте echo $query, возможно сразу все станет не место,
кроме того, полезно выполнить запрос, например в PMA (Добавление)
maxiiLYY пишет:
php видит ошибку если в спецификации именно так и задается запрос
а что пишет, какой текст ошибки?
Database query failed, номер ошибки не выводит.
В стороннем отладчике ошибку видит тут WHERE id = {$id}. Но я не пойму почему если в примерах в интернете авторы так и выводят, перед WHERE нету запятой, и потом WHERE id = 2. И все.
//////////////////////////////// /////////////
$query = "UPDATE subjects SET menu_name = '{$menu_name}', position = {$position}, visible = {$visible} WHERE id = {$id}";
сделал echo -
UPDATE subjects SET menu_name = 'Delete me', position = 4, visible = 1 WHERE id = 5Database query failed.
return вот это.
В чем причина решительно непонятно
Sail
Отправлено: 02 Января, 2018 - 21:55:29
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
maxiiLYY, откуда такая уверенность, что проблема именно в части "WHERE id = {$id}"?
Какую библиотеку используете (pdo, mysqli, mysql, etc...)?
maxiiLYY
Отправлено: 02 Января, 2018 - 22:13:56
Новичок
Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2018
Помог: 0 раз(а)
Sail пишет:
maxiiLYY, откуда такая уверенность, что проблема именно в части "WHERE id = {$id}"?
Какую библиотеку используете (pdo, mysqli, mysql, etc...)?
maxiiLYY, откуда такая уверенность, что проблема именно в части "WHERE id = {$id}"?
-ибо в постороннем отладчике красным выделяет именно эту часть.
Какую библиотеку используете (pdo, mysqli, mysql, etc...)? - mysqli (mysql - я не настолько стар)
andrewkard
Отправлено: 02 Января, 2018 - 22:31:26
Участник
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Помог: 30 раз(а)
maxiiLYY пишет:
сделал echo -
UPDATE subjects SET menu_name = 'Delete me', position = 4, visible = 1 WHERE id = 5
собралось нормально, разве что наименование колонок завернуть в обратные кавычки ``
запись с id = 5 имеется?
Sail
Отправлено: 03 Января, 2018 - 16:36:02
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
maxiiLYY пишет:
Database query failed, номер ошибки не выводит.
Что ещё в этом сообщении пишет, после двоеточия?
Мелкий
Отправлено: 03 Января, 2018 - 17:07:11
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Sail пишет:
Что ещё в этом сообщении пишет, после двоеточия?
А с чего вы решили, что должно быть двоеточие?
Я пока не вижу решительно никакого кода выполнения запроса и обработки ошибок. Вижу лишь подстановку переменных в структуру запроса - что весьма плохо само по себе в общем случае работы с СУБД, но что не является прямой ошибкой.
----- PostgreSQL DBA
maxiiLYY
Отправлено: 03 Января, 2018 - 18:08:50
Новичок
Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2018
Помог: 0 раз(а)
andrewkard пишет:
maxiiLYY пишет:
сделал echo -
UPDATE subjects SET menu_name = 'Delete me', position = 4, visible = 1 WHERE id = 5
собралось нормально, разве что наименование колонок завернуть в обратные кавычки ``
запись с id = 5 имеется?
Имеется конечно (Добавление)
Sail пишет:
maxiiLYY пишет:
Database query failed, номер ошибки не выводит.
Что ещё в этом сообщении пишет, после двоеточия?
Все (Добавление)
Мелкий пишет:
Sail пишет:
Что ещё в этом сообщении пишет, после двоеточия?
А с чего вы решили, что должно быть двоеточие?
Я пока не вижу решительно никакого кода выполнения запроса и обработки ошибок. Вижу лишь подстановку переменных в структуру запроса - что весьма плохо само по себе в общем случае работы с СУБД, но что не является прямой ошибкой.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
andrewkard пишет:
Если столбец устанавливается в его текущее значение, то MySQL замечает это и не обновляет его.
Это внутренняя оптимизация, не влияющая на результат запроса. Приложению всё равно будет рапорт об успешном выполнении запроса. (но affected_rows = 0, если верно помню)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.