2010-08-01 3 views
0

Я использую 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

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

$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) будет работать одинаково.

+0

Вероятно, вы имеете в виду '$ this-> Test-> User-> saveField()' ... Независимо от того, твердый ответ. Нет никакой причины не использовать ORM Cake здесь. – deceze

+0

Это помогает. Спасибо, макамат. – user327712

+0

D'oh! Вы правы, я имел в виду '$ this-> Test-> User-> saveField'. Редактирование сейчас. – macamatic

1

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

1

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

+0

упс! вы используете cakephp. Есть вопрос, как это должно быть сделано. $ c = "helloworld"; $ q = "UPDATE user SET avatar = '{$ c}' WHERE user_id = '999999'"; if ($ this-> Test-> User-> query ($ q)) echo "success"; } else {echo "failed"; } ############################### Обратите внимание, что он возвращает вам идентификатор строки, которая является будучи обновленным , вы можете получить его $ this-> Test-> User-> id – dip1232001

+0

, и для вашей информации я предполагаю, что user_id является основным ключом в вашем пользователе таблицы, но поскольку вы используете cakephp , вы должны назвать все первичные ключи как id тогда вы можете написать этот запрос следующим образом: $ this-> Test-> User-> id = 99999; $ this-> Test-> User-> set ('avatar', 'helloworld'); if ($ this-> Test-> User-> save()) { echo 'success'; } прочее { echo 'faliure'; } – dip1232001

+0

большое спасибо за помощь, окунитесь. – user327712

Смежные вопросы