sql >> Database >  >> RDS >> Mysql

Hoe loop ik door de mysql-resultatenset in een fatfree-framework?

DB-query

Er zijn 3 varianten om door db-resultaten te bladeren:

Zonder mapper:

Voer een SQL-query uit en haal de resultatenset op als een array van associatieve arrays:

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

Met mapper->laden:

Mapper-rijen één voor één ophalen (uw methode):

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

Met mapper->vind:

Haal de resultatenset op als een array van mappers:

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

DB-foutafhandeling

\DB\SQL is een subklasse van PDO, dus het kan catchable PDO-uitzonderingen genereren. Aangezien deze standaard zijn uitgeschakeld, moet u ze eerst inschakelen. Dit kan op 2 verschillende manieren:

  • op het moment van instantiëren, voor alle transacties:

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

  • later in de code, per transactie:

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

Zodra PDO-uitzonderingen zijn ingeschakeld, kunt u ze gewoon als andere uitzonderingen beschouwen:

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

Dit werkt ook met DB-mappers, omdat ze op dezelfde DB\SQL-klasse vertrouwen:

$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. Databasemodel voor een berichtensysteem

  2. SQLException:tekenreeks of binaire gegevens worden afgekapt

  3. SQL Buddy - Een webgebaseerd MySQL-beheerprogramma

  4. Ontsnappen van gebruikersinvoer uit database nodig?