Какое значение будет возвращено при обновлении таблицы? - PullRequest
0 голосов
/ 01 августа 2010

Я использую cakePHP 1.26.Я пытался обновить таблицу с помощью этих строк кода:

$c = "helloworld";
$q="UPDATE user SET avatar='{$c}' WHERE user_id='999999'";
$result=$this->Test->User->query($q);

if($result==true){echo "success";}
else{echo "failed";}

Я заметил, что таблица была успешно обновлена, но я все еще видел сообщение «ошибка».Кажется, что значение $ result не является ни True, ни False.

Понятия не имею.

Ответы [ 3 ]

3 голосов
/ 01 августа 2010

query() возвращает набор результатов из запроса SQL. Вы не получите успех против результата неудачи. Тем не менее, вы, вероятно, не должны использовать query() в любом случае. Для этого есть функция; он называется saveField() и возвращает ложь при ошибке.

$this->Test->User->id = 999999;
$result = $this->Test->User->saveField('avatar', $c);
if ($result !== false) echo "success";
else echo "failed";

Если вы настаиваете на использовании query(), нет причин переходить на другую модель. Он просто выполняет запрос SQL. Это будет работать так же, как вы написали:

$this->query($q);

Кстати, if ($result == true) является избыточным и обычно считается плохой формой. просто if ($result) будет работать одинаково.

1 голос
/ 01 августа 2010

после обновления таблицы возвращает номера затронутых строк. поэтому после того, как ваш запрос завершится, если вы вызовете эту функцию «mysql_affered_rows», вы получите затронутые строки, и если он больше 0, это означает, что запрос успешно выполнен, и если он равен 0, то обновление не будет выполнено

1 голос
/ 01 августа 2010

Запрос на обновление SQL возвращает количество обновленных строк .Так что это может быть возвращение целого числа, а не bool.

...