[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: UPDATE
maximka787
ребят,подскажите. не работет mysql_affected_rows при обновлении строк. В документации написано что так и должно быть. как быть в этой ситуации?



Спустя 3 минуты, 7 секунд (25.10.2011 - 14:44) McLotos написал(а):
mysql_affected_rows() возвращает количество рядов, затронутых последним INSERT, UPDATE, DELETE запросом к серверу, на который ссылается указатель link_identifier. Если ресурс не указан, функция использует последнее, успешное соединение, выполненное с помощью функции mysql_connect().

Замечание:
При использовании транзакций mysql_affected_rows() надо вызывать после INSERT, UPDATE, DELETE запроса, но не после подтверждения.

Замечание:
При использовании UPDATE, MySQL не обновит колонки, уже содержащие новое значение. Вследствие этого, функция mysql_affected_rows() не всегда возвращает количество рядов, подошедших по условия, только количество рядов, обновлённых запросом.

Спустя 7 минут, 29 секунд (25.10.2011 - 14:51) m4a1fox написал(а):
maximka787
А что вы ей проверяете? Ну понятно что она для возврата кол-ва строк! Если надо проверить просто обновление - то она не нужна! Может вы просто проверить хотите?

Спустя 28 минут, 55 секунд (25.10.2011 - 15:20) maximka787 написал(а):
m4a1fox
у меня в скрипте два запроса.

1.проверяет есть ли строка с номером.
2. условие : если есть строка то UPDATE если нет, то INSERT.

$resultTEST = mysql_query("select `id` from `tab` where `id` = '".$id."'");
if(mysql_num_rows($resultTEST)>0)
{
$query = " UPDATE `tab` SET ... WHERE `id` = '"$id."'";
}
else
{
$query = "insert into `tab` values ....";
}
$result = mysql_query($query);
if(mysql_affected_rows()>0){
echo 'Сохранено';
}else{
echo 'Не сохранено';
}

Спустя 6 минут, 41 секунда (25.10.2011 - 15:27) m4a1fox написал(а):
maximka787
поправьте меня если не прав! Но! У вас, так как вы насколько я понимаю, начали изучать php относительно недавно, наверняка, id - это auto_increment and primary key. Т.е. id всегда уникален! Поэтому не вижу смысла проверять на его существование. только если id вводится пользователем отдельно! тогда да, а так - не вижу смысла!

Спустя 3 минуты, 11 секунд (25.10.2011 - 15:30) Winston написал(а):
Цитата (m4a1fox @ 25.10.2011 - 15:27)
У вас, так как вы насколько я понимаю, начали изучать php относительно недавно,

Цитата (maximka787 @ 25.10.2011 - 15:20)
На форуме: 4 года, 2 месяца, 17 дней

Хм... Как-то странно smile.gif

Спустя 3 минуты, 31 секунда (25.10.2011 - 15:34) McLotos написал(а):
Цитата (Winston @ 25.10.2011 - 12:30)
Цитата (m4a1fox @ 25.10.2011 - 15:27)
У вас, так как вы насколько я понимаю, начали изучать php относительно недавно,

Цитата (maximka787 @ 25.10.2011 - 15:20)
На форуме: 4 года, 2 месяца, 17 дней

Хм... Как-то странно smile.gif

Цитата
Сообщений: 659

Очень странно =)

Спустя 3 минуты, 5 секунд (25.10.2011 - 15:37) maximka787 написал(а):
m4a1fox
упаси) нет конечно. тут я пример привел, id это один из столбцов. не в нем суть.

Спустя 19 минут, 50 секунд (25.10.2011 - 15:57) m4a1fox написал(а):
Эээээээ я и не посмотрел на время! smile.gif бывает!

Спустя 4 минуты, 50 секунд (25.10.2011 - 16:01) Игорь_Vasinsky написал(а):
так для чего необходимость использовать mysql_affected_rows возникла?

Спустя 5 минут, 35 секунд (25.10.2011 - 16:07) maximka787 написал(а):
Игорь_Vasinsky
проверить результат нужно. данные либо добавились, либо обновились. и мне надо видеть ответ.

четвертое сообщение с кодом, там все просто видно для чего.

Спустя 3 минуты, 58 секунд (25.10.2011 - 16:11) m4a1fox написал(а):
Ну так проверяй через true или false

Спустя 14 минут, 40 секунд (25.10.2011 - 16:26) maximka787 написал(а):
m4a1fox
$result = mysql_query($query);
if($result) { }


?

Спустя 41 минута, 23 секунды (25.10.2011 - 17:07) Winston написал(а):
Ну так можно попробовать
Свернутый текст
$what = 0;
$resultTEST = mysql_query("select `id` from `tab` where `id` = '".$id."'");
if(mysql_num_rows($resultTEST)>0)
{
$query = " UPDATE `tab` SET ... WHERE `id` = '"$id."'";
$what = 0;
}
else
{
$query = "insert into `tab` values ....";
$what = 1;
}
$result = mysql_query($query);
if($what == 0){
echo 'Сохранено';
}elseif($what == 1){
echo 'Вставлено :)';
}

Спустя 1 час, 42 минуты, 13 секунд (25.10.2011 - 18:49) imbalance_hero написал(а):
maximka787
ты уверен, что UPDATE изменяет какую-то запись?

Спустя 14 часов, 53 минуты, 45 секунд (26.10.2011 - 09:43) maximka787 написал(а):
Winston
идея не плохая)

imbalance_hero
да уверен. в документации даже написано, что mysql_affected_rows не возвращает запись при обновлении.

Спустя 19 минут, 21 секунда (26.10.2011 - 10:02) Invis1ble написал(а):
maximka787
Во втором посте (от McLotos) все написано

Спустя 9 часов, 43 минуты, 28 секунд (26.10.2011 - 19:46) imbalance_hero написал(а):
maximka787
Потому что у меня всё работает...


_____________
..Работает - не трогай!
Быстрый ответ:

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