Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает инструкция UPDATE с предложением WHERE / 18 сообщений из 18, страница 1 из 1
06.04.2005, 16:36
    #33001015
Lyaska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
Подскажите, пожалуйста, почему в инструкции 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
06.04.2005, 16:43
    #33001032
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
сделай
Код: plaintext
echo $query;
и покажи, что там сидит
------------------
правильно поставленный вопрос содержит в себе половину ответа
...
Рейтинг: 0 / 0
06.04.2005, 17:24
    #33001151
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
Сообщения об ошибках есть или нет?

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Удачи!
...
Рейтинг: 0 / 0
06.04.2005, 23:02
    #33001582
Lyaska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
значит так, по пунктам:
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
07.04.2005, 00:34
    #33001641
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
Увидев это - я испугался!!!

А если на самом деле разбираться не стал, но
есть у вас такой кусок кода:
Код: 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
07.04.2005, 13:11
    #33002520
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
Lyaskaзначит так, по пунктам:
1. в переменной $row действительно находится ид_надомника действительно ? т.е. echo $row[0] выводит именно то, что ожидается, а не пустую строку?
если да и echo "UPDATE Надомники SET Представитель = '$Parent' WHERE ID_надомника = ".($row[0]); всё равно выдаёт г**но, то помогут только танцы с бубном вокруг $row[0] и способов конкатенации строк.
маленькое замечание: почему ид окружается кавычками? это строка? или всё-таки число? можно, конечно, понадеяться на умное преобразование типов, но я бы не советовал...
------------------
правильно поставленный вопрос содержит в себе половину ответа
...
Рейтинг: 0 / 0
08.04.2005, 13:01
    #33004675
Lyaska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
я немного подправила исходник: значение переменной $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
08.04.2005, 13:08
    #33004707
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
Во-первых, думаю, что такое код гораздо лучше для восприятия:
Код: 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
08.04.2005, 13:20
    #33004754
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
Теперь во-вторых:
Код: 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
08.04.2005, 13:43
    #33004851
Lyaska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает инструкция UPDATE с предложением WHERE
спасибо за советы - они для меня очень ценны, потому что я совсем недавно начала заниматься программированием :)

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

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

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

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

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

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

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

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

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


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