К содержанию

Как сделать true и false при запросе UPDATE

$c = $modx->newQuery('Objekt');
    $c->command('update');
    $c->set(array(
        'name'  => $name
        ));
    $c->where(array(
        'id'    => $id,    
    ));
    $c->prepare();
    $c->stmt->execute();
$c->stmt->execute(); всегда возвращает true наверное потому что запрос выполнен

но как сделать проверку удачно ли прошел запрос или запрос прошел но неудачно так как условие where не нашло нужное значение
Спасибо

Итог, как сделал:
if($c->stmt->rowCount() > 0){
        echo "Ok";
    }else{
        echo"No";
    }
Konstantin
Konstantin
06 октября 2015, 08:24
modx.pro
2 320
Реклама

Комментарии: 6

Konstantin
Konstantin Проверенный
06 октября 2015, 11:30
Так?

if($c->stmt && $c->stmt->execute()){
    $result = ...
}
    Konstantin
    Konstantin Проверенный
    06 октября 2015, 11:34
    не прокатило
      Сергей Шлоков
      Сергей Шлоков Эксперт
      06 октября 2015, 12:11
      Не прокатило что? Объект не обновился или нет объекта с таким id?
      Проверка на ошибки именно такая
      if($c->prepare() && $c->stmt->execute()){
          $result = ...
      }
      А есть ли такой объект можно проверить так
      if ($modx->getCount('Objekt', $c) {
        // есть
      }
        Konstantin
        Konstantin Проверенный
        06 октября 2015, 12:19
        строки в базе нет с таким id а он делает запрос и возвращает якобы true)))

        Это если так делать:
        if($c->stmt && $c->stmt->execute()){
            $result = ...
        }
          Сергей Шлоков
          Сергей Шлоков Эксперт
          06 октября 2015, 12:29
          Можно через PDO сделать
          $c = $modx->newQuery('Objekt');
              $c->command('update');
              $c->set(array(
                  'name'  => $name
                  ));
              $c->where(array(
                  'id'    => $id,    
              ));
              $c->prepare();
              $sql = $c->toSql();
             // sql можно составить и вручную 
             // sql = "UPDATE $modx->getTableName('objekt') SET `name` = {$name} WHERE `id` = {$id}";
              if ($count = $modx->exec($sql)) {
              //  Обновлено $count строк
              }
          Konstantin
          Konstantin Проверенный
          06 октября 2015, 12:30
          Спасибо, на каком то сайте нашел функцию хорошую, получилось так:

          if($c->stmt->rowCount() > 0){
                  echo "Ok";
              }else{
                  echo"No";
              }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6