Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да премина през набора от резултати на mysql в рамка без мазнини?

Запитване в DB

Има 3 варианта за преглеждане на резултатите от db:

Без картограф:

Изпълнете SQL заявка и извлечете резултатния набор като масив от асоциативни масиви:

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

С mapper->товар:

Извличане на редове на картографа един по един (вашият метод):

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

С mapper->намери:

Извличане на резултатния набор като масив от картографи:

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

Обработка на DB грешки

\DB\SQL е подклас на PDO, така че може да хвърля уловени PDO изключения. Тъй като те са деактивирани по подразбиране, първо трябва да ги активирате. Това може да стане по 2 различни начина:

  • в момента на инстанциране, за всички транзакции:

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

  • по-нататък в кода, за всяка транзакция:

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

След като PDO изключенията са разрешени, просто ги хванете като други изключения:

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)
}

Това работи и с DB картографи, тъй като те разчитат на един и същ 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. Всяка извлечена таблица трябва да има своя собствена грешка в псевдонима

  2. Как да изпълним заявка, която се съхранява в колона на таблицата MySQL?

  3. Защитени файлове за изтегляне

  4. Не може да се използва desc име на колона в mysql

  5. SQLAlchemy/MySQL Загубена връзка с MySQL сървър по време на заявка