Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > как работает вот эта функция


Автор: supervladislav 31.10.2011, 16:47
Скажите вот эта функция возвращает полностью обновлённых строк или затронутых столбцов 
всёвремя возвращет ноль даже если только один столбец обновлён ну тоесть одна ячейках 

Код

msql_affected_rows


Добавлено через 3 минуты и 43 секунды
запрос сам выглядит вот так 
Код

$db->sql_query("update magazin_tovars set cena='$cena',kolichestvo='$shtuk',category='$category',naimenovanie='$naimenovanie',opisanie='$opisanie',shirina='$shirina',dlina='$dlina',h='$h' where id='$id'") or die(mysql_error());


внутри класса вот такое 
Код

public function __CONSTRUCT($user,$pass,$server,$database){
$this->user=$user;    
$this->password=$pass;
$this->server=$server;
$this->database=$database;
$this->db_connect=mysql_connect($this->server, $this->user, $this->password);
$this->db_connect_id= @mysql_select_db($this->database,$this->db_connect);
}
public function sql_affect_rows(){
       return mysql_affected_rows($this->db_connect); 
     }

Автор: MoLeX 31.10.2011, 17:00
а при апдейте разве что-то возвращается отличное от true/false?

Автор: MakTpaxep 31.10.2011, 17:19
supervladislav пишет, что у него всегда 0.
Попробуйте тот же запрос без класса делать. Либо у вас нет в таблице айдишника $id.

MoLeX, она вроде может и больше 1 вернуть - например where id < 10.

Автор: supervladislav 31.10.2011, 17:25
MakTpaxep, id есть через var_dump проверял 
всё вроде есть - нормально

Добавлено через 4 минуты и 56 секунд
MoLeX, ты прикалываться опять она должна int возвратить 

Автор: MakTpaxep 31.10.2011, 17:33
1. Попробуйте без использования класса.
2. Ещё вариант, что у вас значение уже вставлено (то есть обновляете теми же данными). mysql_affected_rows возвращает только изменённые строки, а не проходящие по условию.

Автор: supervladislav 31.10.2011, 20:47
MakTpaxep, мой вопрос заключался в том что mysql_affected_rows возвращает только полностью изменёные строки от корки до корки или если хотябы одно значение изменено 

Автор: MakTpaxep 31.10.2011, 21:35
Цитата

mysql_affected_rows возвращает только полностью изменёные строки

mysql_affected_rows возвращает не строки, а количество строк, которые были затронуты последним INSERT, UPDATE или DELETE.
Или я торможу?

Автор: baldina 31.10.2011, 21:38
Цитата(supervladislav @  31.10.2011,  20:47 Найти цитируемый пост)
мой вопрос заключался в том что mysql_affected_rows возвращает только полностью изменёные строки от корки до корки или если хотябы одно значение изменено  

хотя бы одно:
Цитата

For UPDATE statements, the affected-rows value by default is the number of rows actually changed.

см. http://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html

Автор: MoLeX 1.11.2011, 06:01
Цитата(http://www.opennet.ru/base/dev/pl_sql_update.txt.html)

UPDATE возвращает количество полей, которые были изменены. 

да, был неправ.

sql запрос смотри

Автор: Shark 5.11.2011, 23:41
supervladislav, прочтите пожалуйста это: http://www.php.net/manual/en/function.mysql-affected-rows.php

лучше используйте браузер хром, в мне есть переводчик, чтоб перевести 

p.s. mysql_affected_rows - получает количество рядов, задействованных в предыдущей операции MySQL

Автор: supervladislav 7.11.2011, 00:28
спасибо разобрался линк попутал 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)