sql >> Databáze >  >> RDS >> Mysql

Jak mohu procházet sadou výsledků mysql v rámci fatfree?

Dotazování DB

Existují 3 varianty pro procházení výsledků db:

Bez mapovače:

Proveďte dotaz SQL a načtěte sadu výsledků jako pole asociativních polí:

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

S mapperem->load:

Načíst řádky mapovače jeden po druhém (vaše metoda):

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

Pomocí mapper->najít:

Načtěte sadu výsledků jako pole mapovačů:

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

Zpracování chyb DB

\DB\SQL je podtřída PDO, takže může vyvolávat zachytitelné výjimky PDO. Protože jsou ve výchozím nastavení zakázány, musíte je nejprve povolit. To lze provést dvěma různými způsoby:

  • v okamžiku vytvoření instance pro všechny transakce:

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

  • dále v kódu, na základě jednotlivých transakcí:

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

Jakmile jsou výjimky PDO povoleny, stačí je zachytit jako další výjimky:

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

To také funguje s mapovači DB, protože spoléhají na stejnou třídu 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. Komprimace konkrétního oddílu v tabulce na serveru SQL Server (T-SQL)

  2. Zobrazit všechny tabulky v databázi MySQL pomocí PHP?

  3. kde upravit seznamy stopword fulltext mysql?

  4. MySQL - Model seznamu sousedství - Získejte hloubku