[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как колонку в UPDATE...SET... приравнять к массиву
Enkei
В строчке где происходит обновление после приравнивания я указал массив и $row из запроса select. Выписывает ошибку "Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING" , если указать тупо любое число вместо массива все обновляется. Как правильно приравнять к массиву?

PHP
<?php
 
// часть кода
 
$query "SELECT `directory`.`workers_contacts`.`phone_mobile` FROM `directory`.`workers_contacts`"; /
 
$res mysql_query($query,$link) or die("Query failed : " mysql_error());
 while (
$row mysql_fetch_array($res))
     {
         echo 
"<table>\n";
         echo 
"<tr>\n";
         echo 
"<td>".$row['phone_mobile']."</td>\n";
         echo 
"</tr>\n";
         echo 
"</table>\n";
  
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`=$row[]");
   }
 




Спустя 6 минут, 32 секунды (15.07.2009 - 08:54) glock18 написал(а):
Цитата (Enkei @ 15.07.2009 - 05:48)
Как правильно приравнять к массиву?

к массиву приравнять нельзя.

читайте http://dev.mysql.com/doc/refman/5.0/en/update.html

Спустя 7 минут, 33 секунды (15.07.2009 - 09:02) Enkei написал(а):
Ну ладно, пробую теперь приравнять сразу к столбцу из другой таблицы, но данные не обновляются....хоть и ошибки не пишет. Как можно разрешить данный вопрос?
PHP
<?php $query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`=`directory`.`workers_contacts`.`phone_mobile`");


Спустя 13 минут, 14 секунд (15.07.2009 - 09:15) sergeiss написал(а):
Enkei - ты сначала пойми алгоритм обновления. Фактически, он очень простой и очевидный: надо взять определенные величины для определенных колонок и установить их для определенных строк. Если условие не указано, то обновление производится для всех строк.
Теперь смотрим, что написал ты.
SQL
UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`=`directory`.`workers_contacts`.`phone_mobile`

Это переводится как "обновить колонку contacts в таблице office, установить такие-то величины для таких-то колонок..." Да хрен знает что установить и для каких колонок! Или office - это имя БД? Да и попытка обновления делается для всех строк таблицы, безо всяких ограничений.

Ты сначала на словах скажи, что хочешь сделать. Что обновить (колонки), какие строки брать (какие условия) и т.д. и т.п.

Спустя 9 минут, 23 секунды (15.07.2009 - 09:24) Enkei написал(а):
Есть две таблицы в двух разных БД, в одной новые номера телефонов а в другой устаревшие (а кое где их вообще нет), нужно новые перезаписать поверх старых. Значит старые хранятся в базе office таблице contacts колонке phone_mob а новые у нас хранятся в базе directory таблице workers_contacts колонке phone_mobile.

Поможете?

Спустя 16 минут, 32 секунды (15.07.2009 - 09:41) sergeiss написал(а):
Давай сначала по алгоритму разберемся, а код ПХП и запросы написать будет несложно потом.
По-моему, придется сначала сделать запрос к БД с новыми номерами, затем организовать цикл в ПХП, и в цикле делать обновления номеров в БД со старыми номерами. По одному на каждый запрос, с четким указанием в WHERE, для какой строки это делается.

Спустя 8 минут, 28 секунд (15.07.2009 - 09:49) Enkei написал(а):
Ну так я вроде так и делаю. Вот он запрос к новым номерам.
PHP
$query "SELECT `directory`.`workers_contacts`.`phone_mobile` FROM `directory`.`workers_contacts`";

Вот выполнение запроса:
PHP
$res mysql_query($query,$link) or die("Query failed : " mysql_error());

Вот он цикл. Таблицу я просто так построил чтобы сразу наглядно увидеть как сработал первый запрос. Кстати почитал что можно в апдейте приравняться сразу к запросу. Запрос селект выполняется верно потому что таблица строится с номерами. А вот приравнивание не меняет старые номера.
PHP
while ($row mysql_fetch_array($res))
     {
         echo 
"<table>\n";
         echo 
"<tr>\n";
         echo 
"<td>".$row['phone_mobile']."</td>\n";
         echo 
"</tr>\n";
         echo 
"</table>\n";
  
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`=(SELECT `directory`.`workers_contacts`.`phone_mobile` FROM `directory`.`workers_contacts`");
   }

Спустя 32 минуты (15.07.2009 - 10:21) sergeiss написал(а):
Ты все равно при апдейте пытаешься приравнять переменную к массиву... Забудь об этом!!!

Во-первых. В начальном запросе надо запросить номера телефонов и какие-то уникальные идентификаторы, связанные с ними.
Во-вторых. При апдейте надо четко указать один номер телефона, а в условии WHERE использовать уникальный идентификатор.

Иначе - ты говоришь БД "иди туда, не знаю куда, сделай то, не знаю что".

PS. Ну вот если ты кому-то говоришь про телефонный номер друга, то ты говоришь, про какого именно друга идет речь? Или твой слушатель должен по незнакомому номеру телефона догадаться, кому он принадлежит???

Спустя 12 минут, 32 секунды (15.07.2009 - 10:34) Enkei написал(а):
Пробую. Теперь запрашиваю логин из новой таблицы (`directory`.`workers`.`login`)+телефон из новой таблицы(`directory`.`workers_contacts`.`phone_mobile`)+логин из старой таблицы (`office`.`clients`.`login`) и применил еще лефт джоин чтобы по id шла привязка для точного соответсвтия. Данный запрос работает. Выводит в таблице 3 колонки логин из одной таблицы ровно напротив логина из другой+телефон.

PHP
$query = "SELECT `directory`.`workers`.`login`,`directory`.`workers_contacts`.`phone_mobile`,`office`.`clients`.`login` 
FROM `directory`.`workers` left JOIN `office`.`clients` ON `directory`.`workers`.`login`=`office`.`clients`.`login` 
left JOIN `directory`.`workers_contacts` ON `directory`.`workers_contacts`.`id`=`directory`.`workers`.`id`"
;

Я вот не понимаю как при апдейте указать только один телефон?

Спустя 15 минут, 25 секунд (15.07.2009 - 10:49) sergeiss написал(а):
Если выкинуть всю шелуху из написанного тобой ранее цикла, и применить более "правильную" функцию для чтения данных (плюс я слегка изменил запрос), то получится примерно так:

PHP
$query "SELECT `directory`.`workers`.`login` as login1  ,`directory`.`workers_contacts`.`phone_mobile`,`office`.`clients`.`login`as login2 
FROM `directory`.`workers` left JOIN `office`.`clients` ON `directory`.`workers`.`login`=`office`.`clients`.`login` 
left JOIN `directory`.`workers_contacts` ON `directory`.`workers_contacts`.`id`=`directory`.`workers`.`id`"
;

$res mysql_query($query,$link) or die("Query failed : " mysql_error());

while (
$row mysql_fetch_assoc($res))
     {
        
// массив $row содержит 3 величины: $row['login1'], $row['login2'] и $row['phone_mobile']. Вот и используй их при составлении запроса на апдейт!!!
       // для начала можешь просто "тупо" их вывести, чтобы убедиться в корректности выбранных данных
         
echo 'login1: ' $row['login1'] . ', login2: ' $row['login2'].' phone: ' $row['phone_mobile'].'<br>';
        
// тут дальше будет апдейт. Думай, как его сделать. Все данные у тебя есть.
     
}

Спустя 21 минута, 39 секунд (15.07.2009 - 11:11) Enkei написал(а):
Вот все равно не пойму как по одной записи апдейтить. Условие думаю правильно сделал...

PHP
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`=???так и не могу понять что сюда если не массив??? WHERE 'login1'='login2'");
 $res2 = mysql_query($query,$link) or die("Query failed : " . mysql_error());

Спустя 15 минут, 33 секунды (15.07.2009 - 11:26) glock18 написал(а):
Цитата (Enkei @ 15.07.2009 - 08:11)
???так и не могу понять что сюда если не массив???

строку

Спустя 7 минут, 37 секунд (15.07.2009 - 11:34) Enkei написал(а):
Какую именно строку? Массив нельзя, запрос select не получается выписывает Resource id #3, потому что тоже массив походу получается. Ну натолкните на светлую мысль. ohmy.gif

Спустя 3 минуты, 21 секунда (15.07.2009 - 11:37) sergeiss написал(а):
У тебя должно быть `office`.`contacts` или `office`.`clients`? В разных местах по-разному написано. Ты уж определись smile.gif

Что-то типа такого:
PHP
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`=". $row['phone_mobile']. " WHERE `office`.`contacts`.`login`='". $row[ 'login1 ] ."'" );
 $res2 = mysql_query($query,$link) or die("
Query failed);

Спустя 11 минут, 23 секунды (15.07.2009 - 11:49) Enkei написал(а):
`office`.`contacts` должно быть.

Пишется ошибка если ваш апдейт вставляю " Parse error: syntax error, unexpected '"', expecting ']' in Z:\home\localhost\www\script.php on line 22"

Разве можно ставить такого плана кавычки " после равно когда массив выделяем? Где синтаксис неверный =(

Спустя 6 минут, 23 секунды (15.07.2009 - 11:55) Enkei написал(а):
По мелочи подправил кавычки всякие, ошибок теперь нет, но данные не обновляет sad.gif
PHP
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`="$row['phone_mobile']. " WHERE "$row'login1' ] ."="$row'login2' ] ."" );


Где копать? ph34r.gif

Спустя 4 минуты, 22 секунды (15.07.2009 - 12:00) waldicom написал(а):
PHP
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`="$row['phone_mobile']. " WHERE "$row'login1' ] ."="$row'login2' ] ."" ) or die (mysql_error());

Спустя 51 секунда (15.07.2009 - 12:00) sergeiss написал(а):
Цитата (Enkei @ 15.07.2009 - 12:55)
Где копать?

Для начала потренировать внимательность и сравнить написанное мной и тобой, особенно в части условий.

Что касается ошибки... Ну дык, там должна быть кавычка одна, которую я просто не написал. Извини за нескромный вопрос: а ты просто "копипастишь" или еще и думаешь в процессе?
PHP
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`=". $row['phone_mobile']. " WHERE `office`.`contacts`.`login`='". $row[ 'login1' ] ."'" );
 $res2 = mysql_query($query,$link) or die(...)


waldicom!!! Не повторяй ошибку топикстартера, плз!!!!! Он фигню пишет в условии, но ты хоть не копируй ее....

Спустя 15 минут, 52 секунды (15.07.2009 - 12:16) waldicom написал(а):
Цитата
waldicom!!! Не повторяй ошибку топикстартера, плз!!!!! Он фигню пишет в условии, но ты хоть не копируй ее....

Я скопировал его строку не смотря на то, что там стояло внутри. Было сделано специально, чтобы при сравнении строк он увидел, чем отличается моя строка от его.
Но не вопрос, повторять не буду.

Спустя 2 минуты, 49 секунд (15.07.2009 - 12:19) Enkei написал(а):
Извени, все правильно login хранится в `office`.`clients`.`login` то есть мона заменить в условии `office`.`clients`.`login` на ". $row[ 'login2' ] ."
Тогда получится:


PHP
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`="$row['phone_mobile']. " WHERE '"$row'login2' ] ."'='"$row'login1' ] ."'" );


И снова в базу после обновления записывается во все строки такое дело:
Resource id #3
P.S. Конечно я стараюсь и пытаюсь разобраться. Ну почему массив выводится из такого запроса а вставить мы его е можем в апдейт?

Спустя 10 минут, 55 секунд (15.07.2009 - 12:30) Enkei написал(а):
Короче я откинул блок условия, без них все пусть обновятся. И ошибок не вылетает и Resource id #3 не записывается в строки, просто тупо не обновляет данныые. Еще вопрос: по одинарной кавычки не должно быть перед двойными? А то может первая двойная кавычка распознается как конец блока UPDATE ведь перед UPDATE тоже двойная кавычка открывается...
Вот про что я.
PHP
=". $row['phone_mobile']. "
='". $row['phone_mobile']. "'

Спустя 6 минут, 58 секунд (15.07.2009 - 12:37) sergeiss написал(а):
Во-первых, у меня такого нету, что ты написал (а если есть, то покажи, где!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Где я это писал???):
PHP
" WHERE '". $row[ 'login2' ] ."'='". $row[ 'login1' ] ."'"

У меня написано
PHP
" WHERE `office`.`contacts`.`login`='". $row[ 'login1' ] ."'"

И даже не важно, верно это или не верно. Но это - другое условие!!!


Во-вторых... Попробуй еще убрать `office` отовсюду в апдейте.

PS. Насчет кавычек для телефона ты правильно заметил.

Спустя 3 минуты, 44 секунды (15.07.2009 - 12:41) Enkei написал(а):
Ну так а без условия тоже все должно пройти успешно? Так что пока не будем его писать...

Спустя 4 минуты, 15 секунд (15.07.2009 - 12:45) Enkei написал(а):
Короче `office` не меняет событий, проверил только что. Да и вместе со всеми потрохами подставляешь после знака равно вместо
PHP
". $row['phone_mobile']. "
вот например
PHP
'любая цифра'
то база переписывается то есть все работает. unsure.gif

Спустя 29 минут, 35 секунд (15.07.2009 - 13:15) Enkei написал(а):
Так потихоньку разбираюсь, короче в запросе SELECT мы же обозвали `directory`.`workers_contacts`.`phone_mobile` as mobile а в апдейте я писал
PHP
SET `office`.`contacts`.`phone_mob`=". $row['phone_mobile']. "

а нужн конечно же
PHP
SET `office`.`contacts`.`phone_mob`=". $row['mobile']. "

Только вот теперь всю таблицу обновил каким то одним и тем же телефоном. Кто знает почему?

Спустя 3 минуты, 47 секунд (15.07.2009 - 13:18) sergeiss написал(а):
Цитата (Enkei @ 15.07.2009 - 14:15)
Только вот теперь всю таблицу обновил каким то одним и тем же телефоном. Кто знает почему?


Потому что

Цитата (Enkei @ 15.07.2009 - 13:41)
Ну так а без условия тоже все должно пройти успешно? Так что пока не будем его писать...

Спустя 20 минут, 10 секунд (15.07.2009 - 13:39) Enkei написал(а):
О. Пасибо за идею. Ну теперь пора его делать )) Вообщем я пишу условие
PHP
WHERE '". $row[ 'login1' ] ."'='". $row[ 'login2' ] ."'

снова один и тот же номер пишет везде но уже другой номер )))
Как эксперт это же условие правльно составлено? То есть если логин из первой базы совпадает с другим из другой то тогда обновляем номер теелфона.

Спустя 10 минут, 24 секунды (15.07.2009 - 13:49) sergeiss написал(а):
ОК. Я понял всё. Ухожу из темы. Пусть кто-то другой пытается хоть что-то объяснить человеку, который даже после многократных "тыканий носом" и объяснений прямым текстом нихрена ничего не видит и не понимает.

Желающие есть? wink.gif Подходи по одному biggrin.gif

Спустя 8 минут, 42 секунды (15.07.2009 - 13:58) Enkei написал(а):
Э..не бросайте меня пожалуйста ohmy.gif
Так я пробовал в условии сравнивать :
`directory`.`workers`.`login` и`office`.`clients`.`login`
и
`office`.`clients`.`login`='". $row[ 'login1' ] ."'
и
'". $row[ 'login1' ] ."'='". $row[ 'login2' ] ."'
результат один и тот же.
Просто не захочет сейчас заново наверно никто читать с первой страницы все unsure.gif

Спустя 22 секунды (15.07.2009 - 13:58) waldicom написал(а):
Sergessis, это развод. Или социальный эксперимент: кто дольше выдержит полную чушь.

Спустя 9 минут, 1 секунда (15.07.2009 - 14:07) Enkei написал(а):
Ну какой развод. Вы посмотрите сколько у меня сообщений на форуме. Все когда то наверно тупили по мелочи ((( не палкой же бить...в книгах не описано таких нюансов как например массив в UPDATE включить, с таким же массивным условием. ((( вот буквально вчера книгу по PHP купил полторытысячистраничную ((( только на вас надеюсь чтобы переступить ту ступень когда сану понимать нормально.

Спустя 4 минуты, 2 секунды (15.07.2009 - 14:11) sergeiss написал(а):
waldicom - если ты прав и это второе, то я уже сошёл с дистанции cool.gif



Спустя 3 минуты, 45 секунд (15.07.2009 - 14:15) Enkei написал(а):
Ну ведь осталось совсем чуть чуть помочь. Уже почти все работает. Я еще раз перепроверил цикл, проверил верность условия и соответствия столбцам. Но все равно один номер прописывает везде...буду очень благодарен sergeiss за еще один маленький толчок )))

Спустя 1 минута, 45 секунд (15.07.2009 - 14:17) waldicom написал(а):
Цитата (sergeiss @ 15.07.2009 - 13:11)
waldicom - если ты прав и это второе, то я уже сошёл с дистанции  cool.gif

Заступлю на "вахту" за тебя. Посмотрим, сколько я "пройду".

Enkei, приведи сюда структуру данных, а именно:
- как называется база данных
- сколько таблиц
- как называются эти таблицы
- какие поля есть в этих таблицах (для каждой таблицы конечно).

Пока все. Отвечать пожалуйста коротко и по пункатм, которые ты видишь выше.

Спустя 4 минуты, 18 секунд (15.07.2009 - 14:21) glock18 написал(а):
sergeiss
просто герой соцтруда... smile.gif как еще терпения хватило дать откат только к концу второй страницы? smile.gif

Цитата (Enkei @ 15.07.2009 - 11:07)
Все когда то наверно тупили по мелочи ((( не палкой же бить...в книгах не описано таких нюансов как например массив в UPDATE включить, с таким же массивным условием

Дело в том, что обычно так же нигде не объясняется, как при помощи системного блока вылечить геморрой.

Для начала вам нужно изучить основы. А потом уже вы не будет пороть чушь типа
Цитата
массив в UPDATE включить, с таким же массивным условием


к слову, это не нюанс языка программирования. это нюанс вашего воображения и логики

Спустя 4 минуты, 37 секунд (15.07.2009 - 14:25) Enkei написал(а):
-БД office и directory
-в office таблица contacts в ней колонка phone_mob
-в directory таблица workers_contacts в ней колонка phone_mobile

для связки по логинам:
-в office таблица clients в ней колонка login
-в directory таблица workers в ней колонка login

Требуется в базе office обновить данные о телефонах (всех записей) взяв их в базе directory

Спустя 7 минут, 13 секунд (15.07.2009 - 14:33) waldicom написал(а):
Я просил все поля привести.
Вопрос: почему две базы? Так точно надо? Затем я не уверен, что php может работать с двумя базами данных, хотя и не исключено (надо проверить для интереса).

Теперь вводная:
берем ТОЛЬКО базу office , таблицу contacts. Как будет выглядеть запрос, который обновляет поле phone_mobile у человека, номер которого пусть будет 35 (возможно это поле contactID или что-то типа этого)

Спустя 4 минуты, 59 секунд (15.07.2009 - 14:38) sergeiss написал(а):
Слегка оффтоп...
Цитата (glock18 @ 15.07.2009 - 15:21)
просто герой соцтруда...

Я подумал, и решил "дырку просверлить" smile.gif Теперь буду "герой соцтруда" biggrin.gif biggrin.gif biggrin.gif

Спустя 2 минуты, 52 секунды (15.07.2009 - 14:41) Enkei написал(а):
Так у меня полей в таблицах по нескольку сотен. Зачем все приводить? С двумя базами может одновременно работать. Проверено запросом SELECT который я тут приводил.


Про твое задание, вот часть кода:
PHP
<?php
$hostname 
"localhost"// название сервера MySQL
$username "root"// имя пользователя
$password ""// пароль
$dbName1 "directory"// название базы данных 1
$dbName2 "office"// название базы данных 2
$table1 "workers_contacts";
$table2 "contacts";
$link mysql_connect($hostname$username$password// соединяемся с базой данных
or die( "Ошибка подключения к серверу");
echo( 
"Подключение к серверу выполнено");
$query "SELECT `directory`.`workers`.`login` as login1  ,`directory`.`workers_contacts`.`phone_mobile` as mobile,`office`.`clients`.`login`as login2 FROM `directory`.`workers` left JOIN `office`.`clients` ON `directory`.`workers`.`login`=`office`.`clients`.`login` left JOIN `directory`.`workers_contacts` ON `directory`.`workers_contacts`.`id`=`directory`.`workers`.`id`"// составляем запрос к базе
$res mysql_query($query,$link) or die("Query failed : " mysql_error());
while (
$row mysql_fetch_assoc($res))
    {
        echo 
"<table>\n";
        echo 
"<tr>\n";
        echo 
"<td></td>\n";
        echo 
"</tr>\n";
        echo 
"</table>\n";
        
//echo 'login1: ' . $row['login1'] . ', login2: ' . $row['login2'].' phone: ' . $row['phone_mobile'].'<br>';
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`="$row['mobile']. "  WHERE '"$row'login1' ] ."'='bon' " );
$res2 mysql_query($query,$link);
echo 
$res2;
 }
mysql_close($link);


Теперь во всей колонке с телефонами записывается номер логина "bon". А почему во всех? Ведь поставили же условие обновить только у логина bon?

Спустя 5 минут, 38 секунд (15.07.2009 - 14:46) Guest написал(а):
Enkei, у тебя тут упоминаются 4 таблицы. Если напишешь связи между ними - я напишу тебе запрос на обновление.

Даю одну попытку.

Спустя 1 минута, 24 секунды (15.07.2009 - 14:48) sergeiss написал(а):
Enkei - я вот не пойму. Ты хочешь сказать, что с таким кодом в условии
PHP
"  WHERE '". $row[ 'login1' ] ."'='bon' "

не издеваешься над форумом? После того, как я тебе минимум раз 5 сказал, что это хрень полная и чушь несусветная?

PS. Запиши запрос в отдельную переменную и выведи его на экран. Может быть, хотя бы это поможет тебе понять логику твоего запроса и увидеть свою ошибку.

Спустя 3 минуты, 6 секунд (15.07.2009 - 14:51) Enkei написал(а):
В каждой из четырех таблиц есть колонка id пользователя, которая так и называется id.
`directory`.`workers_contacts`.`id`
`directory`.`workers`.`id`
`office`.`clients`.`id`
`office`.`contacts`.`id`

Спустя 57 секунд (15.07.2009 - 14:52) waldicom написал(а):
Ок, про все поля согласен, не надо.
Теперь к твоему коду:

PHP
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`=". $row['mobile']. "  WHERE '". $row[ 'login1' ] ."'='bon' " );

Я не зря просил тебя написать короткий SQL от руки, но ты решил дать свой код, который я уже видел.
Не хочешь писать, тогда подумаю над вот этой частью:
Цитата
WHERE '". $row[ 'login1' ] ."'='bon' "

Подумай... Подумай... Подумай...


Подумал. Теперь скажи, что у тебя передается в переменной
PHP
$row[ 'login1' ]
?
И подумай, не нужно ли написать на это место имя поля

Спустя 2 минуты, 54 секунды (15.07.2009 - 14:55) glock18 написал(а):
Цитата (waldicom @ 15.07.2009 - 11:52)
Подумал. Теперь скажи, теперь скажи, что у тебя передается в переменной


у него лежит там 'bon', потому что обновляются все строки...

Enkei
твое условие выглядит как
SQL
WHERE 'bon' = 'bon'


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

Спустя 1 минута, 49 секунд (15.07.2009 - 14:56) waldicom написал(а):
Цитата (glock18 @ 15.07.2009 - 13:55)
Цитата (waldicom @ 15.07.2009 - 11:52)
Подумал. Теперь скажи, теперь скажи, что у тебя передается в переменной


у него лежит там 'bon', потому что обновляются все строки...

Enkei
.....

Если это для меня, то не было необходимости. Это был вопрос, ответ на который должен был найти ТС. Но спасибо.

Спустя 29 секунд (15.07.2009 - 14:57) Enkei написал(а):
Цитата (sergeiss @ 15.07.2009 - 11:48)
PS. Запиши запрос в отдельную переменную и выведи его на экран. Может быть, хотя бы это поможет тебе понять логику твоего запроса и увидеть свою ошибку.

Это я уже давно сделал. Выводит вот такой столбик
Resource id #4
Resource id #5
Resource id #6
Resource id #7
Resource id #8
Resource id #9
Resource id #10
... и так далее

Спустя 2 минуты, 12 секунд (15.07.2009 - 14:59) glock18 написал(а):
waldicom
да не... я так... предупреждая еще 5-10 вопросов

Спустя 1 минута, 49 секунд (15.07.2009 - 15:01) sergeiss написал(а):
Цитата (waldicom @ 15.07.2009 - 15:52)
И подумай, не нужно ли написать на это место имя поля

Оффтопик: я специально подсчитал - это уже "попытка №5" в этой теме smile.gif

Enkei
Покажи код, как именно ты выводишь на печать... Я готов поспорить на бутылку коньяка, что ты выводишь не то, что надо smile.gif

Спустя 1 минута, 17 секунд (15.07.2009 - 15:02) glock18 написал(а):
Цитата (sergeiss @ 15.07.2009 - 12:01)
Я готов поспорить на бутылку коньяка

ставки растут smile.gif ставлю две biggrin.gif

PS: за то, что не то выводится.

Спустя 25 секунд (15.07.2009 - 15:03) Enkei написал(а):
Цитата
ты действительно еще не понимаешь, почему у тебя обновляются все строки?

Честное слово не понимаю. =(

Цитата
И подумай, не нужно ли написать на это место имя поля

Я не умею писать имя поля. =(

Спустя 2 минуты, 30 секунд (15.07.2009 - 15:05) sergeiss написал(а):
Цитата (Enkei @ 15.07.2009 - 16:03)
Я не умею писать имя поля. =(

(с грохотом упал, откуда-то из-под стола, громко похрюкивая, едва дотянулся до клавиатуры, весь мой офис парализован и не может работать) wink.gif


PS. Ну так покажи код, где ты выводишь на экран для контрольного просмотра свой запрос... Не стесняйся...

Спустя 25 секунд (15.07.2009 - 15:05) glock18 написал(а):
Цитата (Enkei @ 15.07.2009 - 12:03)
Я не умею писать имя поля. =(

blink.gif

Цитата
`office`.`contacts`.`phone_mob`

хочется заметить, что это часть запроса, предоставленного Enkei.

первое слово - имя базы данных
второе - табличка
третье - имя поля

Цитата (Enkei @ 15.07.2009 - 12:03)
Я не умею писать имя поля. =(

Цитата
`office`.`contacts`.`phone_mob`

Цитата
третье - имя поля


еще что-то непонятно?

Спустя 1 минута, 3 секунды (15.07.2009 - 15:06) glock18 написал(а):
Цитата (sergeiss @ 15.07.2009 - 12:05)
с грохотом упал

у меня примерно такая же реакция была laugh.gif

Спустя 1 минута, 41 секунда (15.07.2009 - 15:08) Enkei написал(а):
Цитата (sergeiss @ 15.07.2009 - 12:01)
Цитата (waldicom @ 15.07.2009 - 15:52)
И подумай, не нужно ли написать на это место имя поля

Оффтопик: я специально подсчитал - это уже "попытка №5" в этой теме smile.gif

Enkei
Покажи код, как именно ты выводишь на печать... Я готов поспорить на бутылку коньяка, что ты выводишь не то, что надо smile.gif

Бутылка проиграна, я нашел ошибку в том как я выводил
PHP
$query2  =  mysql_query("UPDATE `office`.`contacts` SET `office`.`contacts`.`phone_mob`="$row['mobile']. "  WHERE `office`.`clients`.`login`='bon' " );
$res2 mysql_query($query,$link);
echo 
$res2;

В предпослдней строчке $query а надо $query2.

Спустя 7 минут, 9 секунд (15.07.2009 - 15:15) sergeiss написал(а):
Цитата (Enkei @ 15.07.2009 - 16:08)
Бутылка проиграна, я нашел ошибку в том как я выводил
<....>
В предпослдней строчке $query а надо $query2.

А это значит, что я выиграл smile.gif Потому что на момент написания мною того текста был неправильный вывод. И она остался... Потому что надо
PHP
echo $query2;


Плюс, я вижу наконец-то правильное условие в апдейте.

Результат какой?

PS. "Правильное" условие написано для одного только пользователя с логином bon. Надо еще скорректировать условие, чтобы всё было совсем уж правильно т.е. для любого произвольного пользователя. Для этого достаточно внимательно прочитать всю тему с начала и посмотреть, что я писал. Ответ уже был дан.

Спустя 5 минут, 7 секунд (15.07.2009 - 15:20) Enkei написал(а):
Результат не оптимистичный. Очистил всю колонку с телефонами. И по идее только телефон bonа должен записаться, а она по прежнему пустая (((

Спустя 4 минуты, 45 секунд (15.07.2009 - 15:25) sergeiss написал(а):
Ты не очистил эту колонку, а перезаписал ее последним апдейтом...

Сделай, черт тебя подери, нормальное условие, которое я в этой теме уже несколько раз написал!!!!!!!!!!!!!!!!!!!!!!!!

Спустя 2 минуты, 54 секунды (15.07.2009 - 15:28) Enkei написал(а):
Ты про это? WHERE `office`.`clients`.`login`=". $row[ 'login1' ] ."

Спустя 3 минуты, 35 секунд (15.07.2009 - 15:32) sergeiss написал(а):
Цитата (Enkei @ 15.07.2009 - 16:28)
Ты про это?

Угадай с 3-х попыток: (1) "про это", (2) "не про это", (3) "издеваюсь над тобой".

Твой вариант ответа? smile.gif

PS. Только учти, что логин должен быть в запросе в кавычках. Ты же сам это заметил, где-то на 1-й или 2-й странице.

Спустя 3 минуты, 14 секунд (15.07.2009 - 15:35) Enkei написал(а):
Ну да, кавычки вот они WHERE `office`.`clients`.`login`='". $row[ 'login1' ] ."' но все равно не работает!!!!!!!!!!!!!!!!!!
Вообще я думаю это верное условие.

Спустя 17 минут, 35 секунд (15.07.2009 - 15:52) waldicom написал(а):
Мне это напоминает про "В барабане моей стиральной машинки 3245 дырочек. А у соседа 3780. Должна ли я обратиться в сервисный центр, чтобы мне досверлили дырок"

Спустя 8 минут, 13 секунд (15.07.2009 - 16:01) sergeiss написал(а):
waldicom - может быть и так... Ну ладно, я повторно "схожу с дистанции" smile.gif

У меня еще другие ассоциации были, типа "моцик не мой, я только разместил объяву..." laugh.gif laugh.gif laugh.gif

Спустя 4 минуты, 36 секунд (15.07.2009 - 16:05) Enkei написал(а):
Так а в чем дело??? Скажите хоть одно вы знаете????

Спустя 7 минут, 22 секунды (15.07.2009 - 16:13) waldicom написал(а):
Цитата (Enkei @ 15.07.2009 - 15:05)
Так а в чем дело??? Скажите хоть одно вы знаете????

Если тебе в течение почти 60 сообщений пытались донести "светлую мысль", то возможно тебе стоит перечитать еще раз всю ветку.

Спустя 2 минуты, 52 секунды (15.07.2009 - 16:16) Enkei написал(а):
так мне долго пытались донести чтобы я имя поля указал в условии. я указал. ен апдейтятся записи sad.gif

Спустя 11 минут, 10 секунд (15.07.2009 - 16:27) waldicom написал(а):
ок, имя поля ты указал, но не работает так, как надо.
ТОгда выведи на экран тот запрос, который ты выполняешь. Только выводи сам запрос, а не результат работы функции mysql_query().
Для этого сам запрос присвой переменной, а функции mysql_query() давай эту переменную.

Спустя 2 дня, 18 часов, 1 минута, 28 секунд (18.07.2009 - 10:28) Dezigo написал(а):
PHP
$query = "SELECT `directory`.`workers_contacts`.`phone_mobile` FROM `directory`.`workers_contacts`"; /
 $res = mysql_query($query,$link) or die("Query failed : " . mysql_error());
 while ($row = mysql_fetch_array($res))
     {
         echo "<table>\n";
         echo "<tr>\n";
         echo "<td>".$row['phone_mobile']."</td>\n";
         echo "</tr>\n";
         echo "</table>\n";
          mysql_query("UPDATE office,contacts FROM directory SET 
                              office =    '$row[0]',
                              contacts = '$row[1]',
                              phone_mob`='"
.$row['phone_mobile']."'"or die("error");      
   
}


smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.