Тестирование объекта php - PullRequest
1 голос
/ 14 мая 2009

Это может быть довольно дурацким, но я все равно спрошу. У меня есть класс, который вставляется в мою базу данных. После того, как вставка закончена, я хотел бы иметь возможность проверить, была ли вставка успешной. Может кто-нибудь сказать мне, что может быть хороший способ сделать это?

Я называю класс так:

foo = new Myclass('my params');

print_r($foo) возвращает объект. Опять же, все, что меня интересует, это проверка, была ли вставка успешной или нет.

Ответы [ 5 ]

1 голос
/ 14 мая 2009

С http://uk3.php.net/manual/en/function.mysql-db-query.php

 mysql_db_query() selects a database, and executes a query on it. 

Возвращает положительный результат MySQL для результата запроса или FALSE при ошибке. Функция также возвращает TRUE / FALSE для запросов INSERT / UPDATE / DELETE, чтобы указать успех / неудачу.

Таким образом, MyClass может установить флаг ошибки в конструкторе в качестве возвращаемого значения mysql_db_query (), которое вы затем проверяете в своем коде

foo = new Myclass('my params');

if (foo->error) {
 // error occured
} else {
 // all is good
}

надеюсь, это поможет!

0 голосов
/ 14 мая 2009

Вы можете просто сделать $ foo-> disabled_rows () Который на вставке будет 1.

0 голосов
/ 14 мая 2009
$foo = new Myclass('my params');
if ($foo->sqlerror) {
  echo "Error Message: ".$foo->sqlerrmsg;
}


class MyClass {
  var $sqlerror = false;
  var $sqlerrmsg = null;

  // constructor
  function MyClass($parms) {
    $res = mysql_query($sql);

    if (mysql_error()) {
      $this->sqlerrmsg = mysql_error();
      $this->sqlerror = true;
    }
  }
}
0 голосов
/ 14 мая 2009

Функция mysql_query () возвращает true при успешной вставке.

Ты сам написал класс? Если это так, вы можете использовать функцию insert () или save () (как бы вы ее ни называли), возвращая логическое значение (true / false), чтобы вы могли проверить, была ли вставка успешной.

Если вы используете DB_DataObject, это выглядит так:

$foo = new ClassX();
$foo->name = 'Name';
if($foo->insert()) {
  //insert succeeded
} else {
  //insert failed
}
0 голосов
/ 14 мая 2009

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

В зависимости от того, насколько тщательным вы хотите провести тестирование, вам также следует взглянуть на phpunit .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...