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 запросом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Тут видит ошибку WHERE id = {$id}"; Не пойму почему
maxiiLYY
Отправлено: 02 Января, 2018 - 18:17:29
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




$id = 5;
$menu_name = "Delete me";
$position = 4;
$visible = 1;

// 2. Perform database query
$query = "UPDATE subjects SET menu_name = '{$menu_name}', position = {$position}, visible = {$visible} WHERE id = {$id}";

Не пойму почему тут WHERE id = {$id}"; - php видит ошибку если в спецификации именно так и задается запрос
 
 Top
andrewkard
Отправлено: 02 Января, 2018 - 20:50:25
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Перед тем как выполнить запрос, сделайте echo $query, возможно сразу все станет не место,
кроме того, полезно выполнить запрос, например в PMA
(Добавление)
maxiiLYY пишет:
php видит ошибку если в спецификации именно так и задается запрос

а что пишет, какой текст ошибки?
 
 Top
maxiiLYY
Отправлено: 02 Января, 2018 - 21:06:06
Post Id


Новичок


Покинул форум
Сообщений всего: 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 вот это.

В чем причина решительно непонятно
 
 Top
Sail
Отправлено: 02 Января, 2018 - 21:55:29
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




maxiiLYY, откуда такая уверенность, что проблема именно в части "WHERE id = {$id}"?
Какую библиотеку используете (pdo, mysqli, mysql, etc...)?
 
 Top
maxiiLYY
Отправлено: 02 Января, 2018 - 22:13:56
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




Sail пишет:
maxiiLYY, откуда такая уверенность, что проблема именно в части "WHERE id = {$id}"?
Какую библиотеку используете (pdo, mysqli, mysql, etc...)?


maxiiLYY, откуда такая уверенность, что проблема именно в части "WHERE id = {$id}"?

-ибо в постороннем отладчике красным выделяет именно эту часть.
Какую библиотеку используете (pdo, mysqli, mysql, etc...)? - mysqli (mysql - я не настолько стар)
 
 Top
andrewkard
Отправлено: 02 Января, 2018 - 22:31:26
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




maxiiLYY пишет:
сделал echo -

UPDATE subjects SET menu_name = 'Delete me', position = 4, visible = 1 WHERE id = 5

собралось нормально, разве что наименование колонок завернуть в обратные кавычки ``

запись с id = 5 имеется?
 
 Top
Sail
Отправлено: 03 Января, 2018 - 16:36:02
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




maxiiLYY пишет:
Database query failed, номер ошибки не выводит.

Что ещё в этом сообщении пишет, после двоеточия?
 
 Top
Мелкий Супермодератор
Отправлено: 03 Января, 2018 - 17:07:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Sail пишет:
Что ещё в этом сообщении пишет, после двоеточия?

А с чего вы решили, что должно быть двоеточие?
Я пока не вижу решительно никакого кода выполнения запроса и обработки ошибок. Вижу лишь подстановку переменных в структуру запроса - что весьма плохо само по себе в общем случае работы с СУБД, но что не является прямой ошибкой.


-----
PostgreSQL DBA
 
 Top
maxiiLYY
Отправлено: 03 Января, 2018 - 18:08:50
Post Id


Новичок


Покинул форум
Сообщений всего: 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 пишет:
Что ещё в этом сообщении пишет, после двоеточия?

А с чего вы решили, что должно быть двоеточие?
Я пока не вижу решительно никакого кода выполнения запроса и обработки ошибок. Вижу лишь подстановку переменных в структуру запроса - что весьма плохо само по себе в общем случае работы с СУБД, но что не является прямой ошибкой.


Ну так сначала надо потренироваться на такой мелочи, как вы правильно заметили, а потом уже свои CMS писать, а сразу писать запросы на 20 страниц уж никак не получится
(Добавление)
https://drive[dot]google[dot]com/file/d/[dot][dot][dot]view?usp=sharing - сама БД. Одинаковый текст в записях, ну и ладно в общем, вставить то должно
(Добавление)
https://drive[dot]google[dot]com/file/d/[dot][dot][dot]view?usp=sharing - а это доступ на сами 3 файла что я пробую делать
 
 Top
andrewkard
Отправлено: 04 Января, 2018 - 11:08:02
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Думаю проблема в этом:
Цитата:

Если столбец устанавливается в его текущее значение, то MySQL замечает это и не обновляет его.

(Добавление)
вернее особенность.
(Добавление)
maxiiLYY пишет:
В стороннем отладчике ошибку видит тут WHERE id = {$id}

что за отладчик?
 
 Top
maxiiLYY
Отправлено: 04 Января, 2018 - 11:18:57
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




andrewkard пишет:
Думаю проблема в этом:
Цитата:

Если столбец устанавливается в его текущее значение, то MySQL замечает это и не обновляет его.

(Добавление)
вернее особенность.
(Добавление)
maxiiLYY пишет:
В стороннем отладчике ошибку видит тут WHERE id = {$id}

что за отладчик?


https://ru[dot]piliapp[dot]com/mysql-syntax-check/ - вот тут отладчик.

Ну так а как поправить то ошибку эту???
Какие действия выполнять?
 
 Top
andrewkard
Отправлено: 04 Января, 2018 - 11:24:28
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




maxiiLYY пишет:
вот тут отладчик.

как этот отладчик относится к php?
в него уже готовый запрос нужно ставить:
maxiiLYY пишет:
UPDATE subjects SET menu_name = 'Delete me', position = 4, visible = 1 WHERE id = 5

maxiiLYY пишет:
Ну так а как поправить то ошибку эту???

замените
Цитата:

if ($result && mysqli_affected_rows($connection) == 1) {


на

 
 Top
Мелкий Супермодератор
Отправлено: 04 Января, 2018 - 11:25:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




andrewkard пишет:
Если столбец устанавливается в его текущее значение, то MySQL замечает это и не обновляет его.

Это внутренняя оптимизация, не влияющая на результат запроса. Приложению всё равно будет рапорт об успешном выполнении запроса. (но affected_rows = 0, если верно помню)

Смотрите какую ошибку возвращает база: http://php.net/manual/en/mysqli.error.php
Так гадать бесперспективно
PS: код не смотрел


-----
PostgreSQL DBA
 
 Top
andrewkard
Отправлено: 04 Января, 2018 - 11:29:47
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




andrewkard пишет:
if ($result && !mysqli_error($connection)) {

или просто ЕСЛИ result
 
 Top
maxiiLYY
Отправлено: 04 Января, 2018 - 20:22:26
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




andrewkard пишет:
andrewkard пишет:
if ($result && !mysqli_error($connection)) {

или просто ЕСЛИ result


вы волшебник, просто тупо волшебник. Так а чего то предыдущий запрос не давал выполняться то? по ссылке написано

http://php.net/manual/ru/mysqli....ffected-rows.php

что mysqli_affected_rows($connection) == 1 если

Целое число, большее нуля, означает количество затронутых или полученных строк.

А вы мне переписали если запрос true и не біло ошибки. Чет не врубаюсь. Разве у вас и не у меня не равноценный код (не злитесь что спрашиваю).
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB