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
Форумы портала PHP.SU :: Версия для печати :: Проблема с sql запросом
Форумы портала PHP.SU » » Вопросы новичков » Проблема с sql запросом

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

1. maxiiLYY - 02 Января, 2018 - 18:17:29 - перейти к сообщению
$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 видит ошибку если в спецификации именно так и задается запрос
2. andrewkard - 02 Января, 2018 - 20:50:25 - перейти к сообщению
Перед тем как выполнить запрос, сделайте echo $query, возможно сразу все станет не место,
кроме того, полезно выполнить запрос, например в PMA
(Добавление)
maxiiLYY пишет:
php видит ошибку если в спецификации именно так и задается запрос

а что пишет, какой текст ошибки?
3. maxiiLYY - 02 Января, 2018 - 21:06:06 - перейти к сообщению
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 вот это.

В чем причина решительно непонятно
4. Sail - 02 Января, 2018 - 21:55:29 - перейти к сообщению
maxiiLYY, откуда такая уверенность, что проблема именно в части "WHERE id = {$id}"?
Какую библиотеку используете (pdo, mysqli, mysql, etc...)?
5. maxiiLYY - 02 Января, 2018 - 22:13:56 - перейти к сообщению
Sail пишет:
maxiiLYY, откуда такая уверенность, что проблема именно в части "WHERE id = {$id}"?
Какую библиотеку используете (pdo, mysqli, mysql, etc...)?


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

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

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

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

запись с id = 5 имеется?
7. Sail - 03 Января, 2018 - 16:36:02 - перейти к сообщению
maxiiLYY пишет:
Database query failed, номер ошибки не выводит.

Что ещё в этом сообщении пишет, после двоеточия?
8. Мелкий - 03 Января, 2018 - 17:07:11 - перейти к сообщению
Sail пишет:
Что ещё в этом сообщении пишет, после двоеточия?

А с чего вы решили, что должно быть двоеточие?
Я пока не вижу решительно никакого кода выполнения запроса и обработки ошибок. Вижу лишь подстановку переменных в структуру запроса - что весьма плохо само по себе в общем случае работы с СУБД, но что не является прямой ошибкой.
9. maxiiLYY - 03 Января, 2018 - 18:08:50 - перейти к сообщению
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 файла что я пробую делать
10. andrewkard - 04 Января, 2018 - 11:08:02 - перейти к сообщению
Думаю проблема в этом:
Цитата:

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

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

что за отладчик?
11. maxiiLYY - 04 Января, 2018 - 11:18:57 - перейти к сообщению
andrewkard пишет:
Думаю проблема в этом:
Цитата:

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

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

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


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

Ну так а как поправить то ошибку эту???
Какие действия выполнять?
12. andrewkard - 04 Января, 2018 - 11:24:28 - перейти к сообщению
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) {


на

13. Мелкий - 04 Января, 2018 - 11:25:53 - перейти к сообщению
andrewkard пишет:
Если столбец устанавливается в его текущее значение, то MySQL замечает это и не обновляет его.

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

Смотрите какую ошибку возвращает база: http://php.net/manual/en/mysqli.error.php
Так гадать бесперспективно
PS: код не смотрел
14. andrewkard - 04 Января, 2018 - 11:29:47 - перейти к сообщению
andrewkard пишет:
if ($result && !mysqli_error($connection)) {

или просто ЕСЛИ result
15. maxiiLYY - 04 Января, 2018 - 20:22:26 - перейти к сообщению
andrewkard пишет:
andrewkard пишет:
if ($result && !mysqli_error($connection)) {

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


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

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

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

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

А вы мне переписали если запрос true и не біло ошибки. Чет не врубаюсь. Разве у вас и не у меня не равноценный код (не злитесь что спрашиваю).

 

Powered by ExBB FM 1.0 RC1