Zend-запросы также ничего не возвращают при успешном добавлении строки - PullRequest
0 голосов
/ 14 февраля 2012

Что-то не так с моими Zend-запросами, которые расширяют класс Zend_Db_Table_Abstract?

Обновление возвращает ноль (0) при успешном обновлении, и оно должно быть одним. Добавление нового пользователя ничего не возвращает при успешной вставке.

Пожалуйста, помогите мне.

/*
* Adding new user into database
* @params unknown_type $title, $firstName, $lastName
* @return boolean $sql
*/
public function addNewUser( $title, $firstName, $lastName ) {
    $data = array (
         'user_id' => '',
         'title' => $title,
         'first_name' => $firstName,
         'last_name' => $lastName,
    );
    $result = $this->insert($data);
    return $result;
}

/*
* updating user details using given user id
* @params unknown_type values $userId, $title, $firstName, $lastName
* @return nuumber of rows update, hopefully 1
*/
public function updateUserDetails( $userId, $title, $firstName, $lastName )
{   //echo $userId;
    $data = array ( 'first_name' => $firstName, 'last_name' => $lastName );
    $where = $this  ->getAdapter()
                    ->quoteInto('user_id = ?', $userId);
    $result = $this ->update($data, $where );
    return $result; 
}

Ответы [ 3 ]

3 голосов
/ 14 февраля 2012

Не вставляйте идентификатор пользователя.Вероятно, это целочисленный первичный ключ с автоматическим приращением (если нет, то так и должно быть).Возвращаемое значение - это значение первичного ключа только что вставленной строки.

Кроме того, код выглядит нормально.

0 голосов
/ 04 февраля 2015

Если ваш user_id - автоинкремент, не предоставляйте его. И при обновлении на Zend, если ваше значение обновления совпадает с существующим, вы всегда получите 0. Вы получите 1 при обновлении данных, только когда вы действительно обновляете что-то в своей БД.

0 голосов
/ 15 февраля 2012

Вот мое мнение о том, как немного улучшить эти методы:

/*
* Adding new user into database
* @params unknown_type $title, $firstName, $lastName
* @return boolean $sql
*/
public function addNewUser( $title, $firstName, $lastName ) {
    $data = array (
         //'user_id' => '',  not needed fir insert if is primary key and auto incrementing
         'title' => $title,
         'first_name' => $firstName,
         'last_name' => $lastName,
    );
    $result = $this->insert($data);
    //Don't take chances, return know values. All you need to know at the controller is yes or no
    if (! $result) {
        return FALSE;  //or you can throw an exception
    } else {
        return TRUE;
    }
}

/*
* updating user details using given user id
* @params unknown_type values $userId, $title, $firstName, $lastName
* @return nuumber of rows update, hopefully 1
*/
public function updateUserDetails( $userId, $title, $firstName, $lastName )
{   //you forgot the title array key
    //if you are concerned there might be more then one row with this id test for it before the update.
    $rows = $this->fetchAll($userId);
    if ($rows->count() > 1) {
        throw new Exception()
     }        


    $data = array ( 'first_name' => $firstName, 'last_name' => $lastName, 'title' =>$title );
    $where = $this  ->getAdapter()
                    ->quoteInto('user_id = ?', $userId);
    $result = $this ->update($data, $where );
    //again ensure your method returns values that you want
    if (! $result) {
        return FALSE; //or exception or 0 or 'yankee doodle'
    } else {
    return TRUE; 
    }
}
...