powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает инструкция UPDATE с предложением WHERE
18 сообщений из 18, страница 1 из 1
Не работает инструкция UPDATE с предложением WHERE
    #33001015
Lyaska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, почему в инструкции UPDATE может не работать условие WHERE...
у меня почему-то не обрабатывается запрос, в который добавлено предложение WHERE...если его не использую, то запрос работает, но при этом обновляются ВСЕ строки...
такая вот штука...

Кстати, запрос выглядит вот так:

if ($Parent_old != $Parent)
{ $query = "UPDATE Надомники SET Представитель = '$Parent' WHERE ID_надомника = $row[0]";
$query_result = mysql_query($query);}

Сначала идет проверка было ли изменено поле в форме, если да, то должно быть обновление по этому полю.
$row[0] - переменная, в которой содержится ID записи. Получает она свое значение вот так:
$row = mysql_fetch_array ($query_result, MYSQL_NUM)

ПОМОГИТЕ!!!!
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33001032
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделай
Код: plaintext
echo $query;
и покажи, что там сидит
------------------
правильно поставленный вопрос содержит в себе половину ответа
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33001151
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сообщения об ошибках есть или нет?

В MySQL лучше всегда ставить кавычки:

...WHERE name = ' $value ' ";
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33001153
Lyaska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в $query_result лежит вот что:

UPDATE Надомники SET 'Представитель' = 'Михно З.Г.' WHERE 'ID_надомника' =

то есть те исправления, которые я вношу распознаются, а не воспринимается переменная $row[0]...похоже она совсем не видится :((
а что с этим делать?
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33001304
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lyaskaв $query_result лежит вот что:

UPDATE Надомники SET 'Представитель' = 'Михно З.Г.' WHERE 'ID_надомника' =

то есть те исправления, которые я вношу распознаются, а не воспринимается переменная $row[0]...похоже она совсем не видится :((
а что с этим делать?
Честно говоря я вообще не понял, что вы хотели этим сказать или это уже конец дня.

см. выше
правильно поставленный вопрос содержит в себе половину ответа


И вообще в $query_result никак не может быть то, что вы пишите.

Давай еще раз... "с чувством, с толком, с расстоновкой".
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33001314
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как мне оформить свое сообщение?
Правила форума
так мы быстрее поймем друг друга!
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33001336
Lyaska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ты прав....это конец дня...и тот запрос, что я написала лежит в $query...

UPDATE Надомники SET Представитель = 'Михно' WHERE ID_надомника=''

вот такой вот запросик....а переменная с id все-таки не видна....

знаете как исправить?
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33001506
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Предлагаю просто вывести переменную $row[0] и посмотреть, что в ней.
Если она в порядке, то проблема скорее всего в запросе.

2. Для того, чтобы не гадать, напишите лучше структуру вашей таблицы (команда create table). И несколько операторов insert с тестовыми данными.

3. Еще раз..., четко, что вы хотите сделать.

4. Что должно получиться.

5. Где по-вашему мнению скорее всего "закралась" ошибка.

Удачи!
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33001582
Lyaska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
значит так, по пунктам:
1. в переменной $row действительно находится ид_надомника

2.Сделать необходимо следующее - вывод данных из БД на экран с
возможностью редактирования. При этом возможны два варианта
реализации
1)на 1 странице помещается инфа об одном надомнике (для
каждого атрибута имеется свое поле)
2)выводятся все данные из таблицы на экран, есть где-нибудь
кнопочка"редактировать", нажимаем, получаем форму для
поиска необходимой записи, находим, редактируем, сохраняем
3. Должна получится форма, которая дает наглядное и удобное представление
информации
4. Если често, то мне кажется, что ошибка где-то в запросе на обновление, но
я не уверена

Вот мой скрипт, я пыталась реализовать 2-ой из описанных мой способов. Посмотрите, мож что подскажите. Буду очень благодарна:

<html>

<head>
<title>Найти информацию о надомнике</title>
</head>

<body bgcolor = #FFD700>
<?php
require_once("mysql_connect.inc");

if (isset($submit_1))
{

if ($Parent_old != $Parent)
{ $query_1 = "UPDATE Надомники SET Представитель = '$Parent' WHERE ID_надомника = '".$row[0]."'";
$query_result = mysql_query($query_1);}

if ($query_result)
{echo $row[0];
echo '<b><font>Данные были успешно изменены</font></b>';
echo $query_1;
}
else
{echo $row[0];
echo '<b><font>Данные НЕ были изменены</font></b>';
echo $query;
}
}

if (isset($submit))
{ if (strlen($search)>0)
{ $query = "SELECT * FROM Надомники WHERE (Представитель LIKE'%$search%') || (Ребенок LIKE'%$search%') || (Адрес LIKE'%$search%') || (Телефон LIKE'%$search%')";
$query_result = mysql_query($query);
$num_results = mysql_num_rows($query_result);
if ($num_results == 0)
{ echo '<b><font size = 5 color = #000000>Результаты поиска: не найдено ни одной записи.</font></b><br><br>
<a href = "nadomniki_main.php">Вернуться на главную страницу</a>';}
if ($num_results !=0)
{ echo '<b><font size = 5>В результате поиска найдено записей:' .$num_results.' <br><br>
<form action = "search_main.php" method = "post">
<table border=1 width="100%" >';

while ($row = mysql_fetch_array ($query_result, MYSQL_NUM))
{
echo ' <table bgcolor = #DAA520 align = center border = 0>
<tr>
<td align = centre length = 50>
<font size = 4 color = #000000>ID_надомника</font></td>
<td>
<input type = "text" name = "ID" size = 40 value = "'; print $row[0]; echo'"></td>';
$ID_old = $row[0];
echo '
</tr>
<tr>
<td align = centre length = 50>
<font size = 4 color = #000000>ФИО законного представителя</font></td>
<td>
<input type = "text" name = "Parent" size = 40 value = "'; print $row[1]; echo'"></td>';
$Parent_old = $row[1];
echo '
</tr>
<tr>
<td align = centre length = 50>
<font size = 4 color = #000000>ФИО ребенка</font></td>
<td>
<input type = text name = "Child" size = 40 value = "';print $row[2]; echo'"></td>';
$Child_old = $row[2];
echo '
</tr>
<tr>

<td align = centre length = 50>
<font size = 4 color = #000000>Ближайшее метро</font></td>
<td>
<input type = text name = "Metro" size = 40 value = "';print $row[3]; echo'"></td>';
$Metro_old = $row[3];
echo '
</tr>
<tr>
<td align = centre length = 50>
<font size = 4 color = #000000>Адрес</font></td>
<td>
<input type = text name = "Address" size = 40 value = "';print $row[4]; echo'"></td>';
$Address_old = $row[4];
echo '
</tr>
<tr>
<td align = centre length = 50>
<font size = 4 color = #000000>Телефон</font></td>
<td>
<input type = text name = "Phone" size = 40 value = "';print $row[5]; echo'"></td>';
$Phone_old = $row[5];
echo'
</tr>
<tr>
<td length = 40 height = 50>
<font size = 4 color = #000000>ФИО пусконаладчика</font></td>
<td>';
echo '<select name = "FIO_PNR">';
$query_result = mysql_query ('SELECT * FROM Пусконаладчики ORDER BY ФИО_пусконаладчика');
while ($row = mysql_fetch_array ($query_result, MYSQL_NUM))
{ echo "<option value = \"$row[0]\">$row[1]</option>\n>";
}
echo '</select></td>';
$FIO_PNR_old = $FIO_PNR;
echo '
</tr>
<tr>
<td length = 40 height = 50>
<font size = 4 color = #000000>Данные от МТУ</font></td>
<td align = left>
<input type = radio name = "Data_MTU" value="Да" checked>';
echo '   Да<br>
<input type="radio" name="Data_MTU" value="Нет">';
echo '   Нет<br> ';
$Data_MTU_old = $Data_MTU;
echo '
</tr>
<tr>
<td></td>
<td align = right>
<input type = "submit" name = "submit_1" value = "Сохранить">
</tr>
</table>
</form>';
}
}
}
}
else
{ echo '<br><br><b><font size = 5 color = #000000 align = center>Поиск информации о надомнике</font></b><br><br><br>
<form action = "search_main.php" method = "post">
<table align = center border = 0 bgcolor = #DAA520>
<tr>
<td align = center length = 50 height = 50>
<font size = 4 color = #000000>Введите данные</font></td>
<td align = center>
<input type = text name = "search" size = 50 maxlength = 50></td>
</tr>
<tr>
<td></td>
<td align = right >
<input type = "submit" name = "submit" value = "Найти!" /></td>
</tr>
</table>

</form>';
}


?>
</body>

</html>
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33001641
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увидев это - я испугался!!!

А если на самом деле разбираться не стал, но
есть у вас такой кусок кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<html>

<head>
<title>Найти информацию о надомнике</title>
</head>

<body bgcolor = #FFD700>
<?php
require_once("mysql_connect.inc");

if (isset($submit_1))
{ 

if ($Parent_old != $Parent)
{ $query_1 = "UPDATE Надомники SET Представитель = '$Parent' WHERE ID_надомника = '".$row[0]."'";
$query_result = mysql_query($query_1);} 

Так как вы делаете условие, если $row[0] не установлена?

Это только беглый взгляд. Разбираться в вашем коде у меня нет времени.
Такой код тяжело читается. :(
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33002520
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lyaskaзначит так, по пунктам:
1. в переменной $row действительно находится ид_надомника действительно ? т.е. echo $row[0] выводит именно то, что ожидается, а не пустую строку?
если да и echo "UPDATE Надомники SET Представитель = '$Parent' WHERE ID_надомника = ".($row[0]); всё равно выдаёт г**но, то помогут только танцы с бубном вокруг $row[0] и способов конкатенации строк.
маленькое замечание: почему ид окружается кавычками? это строка? или всё-таки число? можно, конечно, понадеяться на умное преобразование типов, но я бы не советовал...
------------------
правильно поставленный вопрос содержит в себе половину ответа
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33004675
Lyaska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я немного подправила исходник: значение переменной $row[0] запоминается в переменной $ID и передается в запрос UPDATE, значения корректные, запрос стриоится правильно - я все эти данные на экран вывожу...вот кусок кода:

if (isset($submit_1))
{ $query;
$query_result;
if ($Parent_old != $Parent)
{ $query = "UPDATE Надомники SET (Представитель = '$Parent') WHERE (ID_надомника = $ID)";
$number = mysql_affected_rows();
$query_result = mysql_query($query);

if ($query_result)
{echo $ID;
echo $Parent;
echo $query;
echo $number;
echo '<b><font>Данные были успешно изменены</font></b>';
return;
}
else
{echo $ID;
echo $Parent;
echo $query;
echo $number;
echo '<b><font>Данные НЕ были изменены</font></b>';
return;
}
}

}


только вот mysql_query выдает false...и mysql_effected_rows(); "-1"...может еще что-нить подскажите?
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33004707
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, думаю, что такое код гораздо лучше для восприятия:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<?PHP
if (isset($submit_1)) { 
    $query;
    $query_result; 
    
    if ($Parent_old != $Parent) { 
        $query = "UPDATE Надомники SET (Представитель = '$Parent') WHERE (ID_надомника = $ID)";
        $number = mysql_affected_rows(); 
        $query_result = mysql_query($query); 

        if ($query_result) {
            echo $ID;
            echo $Parent;
            echo $query;
            echo $number;
            echo '<b><font>Данные были успешно изменены</font></b>';
            
            return;
        } else {
            echo $ID;
            echo $Parent;
            echo $query;
            echo $number;
            echo '<b><font>Данные НЕ были изменены</font></b>'; 
            
            return;
        } 
    }
}

?>
щас будут комментарии :)

P.S. никому не охото тратить свое время на чтение плохочитаемого кода. Извиняюсь за тафтологию.
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33004754
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь во-вторых:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<?PHP
// где комментарии ?
if (isset($submit_1)) { 
    $query; // что вы хотите этим сделать ?
    $query_result; // аналогично
    
    if ($Parent_old != $Parent) { 
        // где значение $ID? Оно точно установлено?
        $query = "UPDATE Надомники SET (Представитель = '$Parent') WHERE (ID_надомника = $ID)";
        
        // сначала вы подсчитываете кол-во затронутых строк в результате запроса, а потом
        $number = mysql_affected_rows(); 
        // выполняете запрос? Логично? :)
        $query_result = mysql_query($query); 

        if ($query_result) {
            echo $ID;
            echo $Parent;
            echo $query;
            echo $number;
            echo '<b><font>Данные были успешно изменены</font></b>';
            
            return;
        } else { // в том случае если запрос не выполнился, то
            // сооветую пользоваться
            // функциями mysql_error() и mysql_errno(), т.е.
            print mysql_error();
            print '<br>';
            print mysql_errno();
            // так будет понятнее из-за чего не выполнился запрос
            
            echo $ID;
            echo $Parent;
            echo $query;
            echo $number;
            echo '<b><font>Данные НЕ были изменены</font></b>'; 
            
            return;
        } 
    }
}

?>
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33004851
Lyaska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за советы - они для меня очень ценны, потому что я совсем недавно начала заниматься программированием :)

а теперь о деле:
ошибка вот такая -
Unknown column 'ID_надомника' in 'where clause'
1054

получается, что не распознается название атрибута...хотя такой есть в моей таблице...
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33004907
Lyaska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Bercut, спасибо большое за помощь!

Проблема оказалась в том, что атрибут "ID_надомника" не воспринимался компилятором. Я его переименовала в "ID_nadomnika" и все заработало !!!!!!!!!))))

Спасибо Вам огромное!
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33005086
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LyaskaУважаемый Bercut, спасибо большое за помощь!

Проблема оказалась в том, что атрибут "ID_надомника" не воспринимался компилятором. Я его переименовала в "ID_nadomnika" и все заработало !!!!!!!!!))))

Спасибо Вам огромное!

Lyaska, самое удивительное и в то же время забавное в этом топике то,
что я никак даже не мог подумать, что Вы действительно пишите ID_надомника в запросе...
Мне казалось, что вы так делаете только лишь для иллюстрации примера на форуме.

Удачи!
...
Рейтинг: 0 / 0
Не работает инструкция UPDATE с предложением WHERE
    #33005093
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догонку, ...

а названия таблиц и других колонок в запросах
вы тоже пишите по-русски?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает инструкция UPDATE с предложением WHERE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]