Количество рядов, подошедших по условия.

phpusershik

Using PHP
Количество рядов, подошедших по условия.

Зделал вот так и получился:

//
$sql2 = "UPDATE kor SET yab='$yablok' WHERE pol='$polka' and date='$date' ";
mysql_query($sql2,$db);

printf ( mysql_affected_rows() );

if ( mysql_affected_rows() == 0 )
{
$sql3 = "INSERT INTO kor (yab) VALUES ('$yablok')";
$result3 = mysql_query($sql3);

$sql1 = "INSERT INTO temp (pole1,date1) VALUES ('$ppp','$date')";
mysql_query($sql1,$db);
}
else
{
$sql4 = "INSERT INTO temp (pole2,date2) VALUES ('$ppp','$date')";
$result4 = mysql_query($sql4);
}
//
- но вот тут столкнулся с одной проблемой:

Из мануала:
-------------------------------

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

Значит если в таблице 'kor' в поле 'yab' есть уже значение 'red' с ID = 5 и если передаваемое значение для поля 'yab' один 'yellow' с ID = 6 а другое 'red' с ID = 5 , то когда он будет добавлять 'yellow' ( mysql_affected_rows() == 0 ) а когда 'red' то тоже будет ( mysql_affected_rows() == 0 ) но как зделать что-когда уже есть значение в соответсвующем поле соответсвующее значение он все равно делал Update то есть срабатывал (mysql_affected_rows() == 1) для идентичных значений тоже?
 

Фанат

oncle terrible
Команда форума
phpusershik
а теперь словами поясни, что ты хотел сделать, что сделал и что получил.
и в чём твоя проблема
 

phpusershik

Using PHP
Автор оригинала: Tor
affected
translate.ru
Да перевод я знаю но вот скажу тепер словами что-бы Фанат поймал смысл моего вопроса:

Мне надо было cделать что-то типа того что-бы если в таблицу инсертируется данные (name and date) и если такого поля с соответсвующими 'date' есть то - что-бы он по второму разу не инсертировался в новую строку (name and date) а просто обновлял поле 'name' у которого поле 'date' соответсвует значению 'date' (name and date) и для этого я применил 'mysql_affected_rows()' между Update-ом и Insert-ом.

Работает прерасно но вот когда в таблице есть поле где name and date соответсвует вставляемому (name and date) то он не обновляет т.е. поподробнее:

name не равняется (name) and date равняется (date)

и соотвт. mysql_affected_rows() =1

все нормально.

name равняется name and date равняется date


и соотвт. mysql_affected_rows() =0

уже ненормально.

то Update-та не происходит а происходит Insert и он добавляет (name and date) и в поле оказывается уже два одинаковых (name and date).
 

phpusershik

Using PHP
Автор оригинала: Фанат
делай сначала селект
а зачем?

-~{}~ 23.08.05 15:13:

Автор оригинала: phpusershik
а зачем?
Ты имееш в виду что я сперва селектом буду выбирать из таб. значени name and date и буду сравнивать если одинаковые то Апдейт иначе Инсерт?

-~{}~ 23.08.05 15:14:

Автор оригинала: phpusershik
а зачем?

-~{}~ 23.08.05 15:13:


Ты имееш в виду что я сперва селектом буду выбирать из таб. значени name and date и буду сравнивать если одинаковые то Апдейт иначе Инсерт?
то есть мне уже не нужен mysql_affected_rows() ?
 

Фанат

oncle terrible
Команда форума
нет, не надо
у инсерта не надо - и реплейсу не надо
 

phpusershik

Using PHP
Через селект выкруктился наконец-то:

Спасибо всем! Приз в студию.

$df= "SELECT * FROM kor ";
$dfd= @mysql_query($df,$db);
if ( mysql_num_rows($dfd) == '0'){
.....
}
else
{}
 

Фанат

oncle terrible
Команда форума
если это шутка, то неудачная.
ещё раз увижу - твой топик будет закрыт
 
Сверху