2013-02-15 1 views
0

Это простой вопрос, но я огляделся и не смог найти ответ. Как извлечь количество поврежденных строк из обновлений/вставки SQL-запросов в ZF2?zend framework 2 Обновление SQL и вставка затронутых строк (ZF2)

Следующий код прекрасно работает для меня (это делает обновление), но я хотел бы выполнить соответствующие проверки ошибок:

public function updateSomeField($id, $some_field){ 
    $data = array(
     'some_field' => $some_field 
    ); 

    $sql = new Sql($this->dbAdapter); 
    $update = $sql->update(); 
    $update->table('Table1'); 
    $update->set($data); 
    $update->where(array('id' => $id)); 
    $statement = $sql->prepareStatementForSqlObject($update); 

    // need help with the code below... 
    // got this from here: 
    // http://stackoverflow.com/questions/11491249/zend-framework-db-update-result 
    $result = 0; 
    try { 
     $result = $statement->execute();  // works fine 
    } catch (\Exception $e) { 
     die('Error: ' . $e->getMessage()); 
    } 
    if (empty($result)) {      // not sure if this is applicable?? 
     die('Zero rows affected'); 
    } 

    return $result;        // ideally, I'd like to return $numRows 
} 

В настоящее время, в случае успеха, $ результат является объектом. Я попытался vardump это, но это не показывает значения.

Любая помощь будет оценена по достоинству. Благодарю.

+0

'$ result' надеюсь, должны быть Типа' Result'. В этом случае это должно помочь вам: https://github.com/zendframework/zf2/blob/master/library/Zend/Db/Adapter/Driver/Mysqli/Result.php#L150 - Если нет, я боюсь, что я не может помочь вам – Sam

+0

Да, это он. Спасибо за ссылку. Затем можно применить $ affectedRows = $ result-> getAffectedRows(); – dimmy

ответ

2

Вы пробовали:

if ($result->count() === 0) { 
    die('Zero rows affected'); 
} 

? Насколько я помню, он подсчитывает все счетные, затрагиваемые_страницы включены.

+1

+1 и спасибо, что это мне очень помогло – Abhishek

2

Здесь работает код в качестве ответа (потому что можно найти проще, чем в комментариях)

try { 
    $affectedRows = $statement->execute()->getAffectedRows(); 
} catch (\Exception $e) { 
    die('Error: ' . $e->getMessage()); 
} 
if (empty($affectedRows)) { 
    die('Zero rows affected'); 
} 

return $affectedRows; 

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

  • Нет связанных вопросов^_^