Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę przejść przez zbiór wyników mysql w ramach beztłuszczowego frameworka?

Kwerendy do bazy danych

Istnieją 3 warianty przeglądania wyników bazy danych:

Bez mapera:

Wykonaj zapytanie SQL i pobierz zestaw wyników jako tablicę tablic asocjacyjnych:

$users = $db->exec('SELECT * FROM users');
foreach($users as $user)
  echo $user['name'];//associative array

Z maperem->załaduj:

Pobierz wiersze programu mapującego jeden po drugim (twoja metoda):

$user=new \DB\SQL\Mapper($db,'users');
$user->load('');
while(!$user->dry()) {
  echo $user->name;//db mapper
  $user->next();
}

Z maperem->znajdź:

Pobierz zestaw wyników jako tablicę maperów:

$mapper=new \DB\SQL\Mapper($db,'users');
$users=$mapper->find('');
foreach($users as $user)
  echo $user->name;//db mapper

Obsługa błędów bazy danych

\DB\SQL jest podklasą PDO, więc może rzucać przechwytujące wyjątki PDO. Ponieważ są one domyślnie wyłączone, musisz je najpierw włączyć. Można to zrobić na 2 różne sposoby:

  • w czasie tworzenia instancji, dla wszystkich transakcji:

    $db = new \DB\SQL($dsn, $user, $pwd, array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ));

  • później w kodzie, na podstawie transakcji:

    $db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

Po włączeniu wyjątków PDO po prostu przechwyć je jako inne wyjątki:

try {
  $db->exec('INSERT INTO mytable(id) VALUES(?)','duplicate_id');
} catch(\PDOException $e) {
  $err=$e->errorInfo;
  //$err[0] contains the error code (23000)
  //$err[2] contains the driver specific error message (PRIMARY KEY must be unique)
}

Działa to również z maperami DB, ponieważ opierają się na tej samej klasie DB\SQL:

$db=new \DB\SQL($dsn,$user,$pwd,array(\PDO::ATTR_ERRMODE=>\PDO::ERRMODE_EXCEPTION));
$mytable=new \DB\SQL\Mapper($db,'mytable');
try {
  $mytable->id='duplicate_id';
  $mytable->save();//this will throw an exception
} catch(\PDOException $e) {
  $err=$e->errorInfo;
  echo $err[2];//PRIMARY KEY must be unique
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyeksportować i zaimportować bazę danych mysql z jej danymi za pomocą skryptu php?

  2. Wtyczki integracyjne Eclipse/MySQL?

  3. PHP zmienia stare mysql_query na PDO

  4. PHP przechowuje hasło w ciasteczku

  5. REGEXP z PDO Mysql