Autor Zpráva
CZFilip
Profil *
Ahoj,
používám pro práci s databází PDO a chtěl bych se zeptat, jak zachytávat chyby po provedení PDO::prepare a PDOStatement->execute. Ve zkratce: jde mi o to, jak slušně zapsat:

if($query->errorCode()!='0000')
{
echo "PDOStatement::errorCode(): ";
print_r($query->errorInfo());
}

Předem děkuji za rady :o)
nightfish
Profil
na manuálové stránce se píše
If the database server cannot successfully prepare the statement, PDO::prepare() returns FALSE.
neboli PDO::prepare() vrací false v případě, že nemůže v pořádku "připravit dotaz"

takže bych to viděl na
$stmt = $conn->prepare($query);
if (!$stmt) Die("Failed to prepare query");
CZFilip
Profil *
Děkuju za radu, trochu jsem projel manuál a našel jsem ještě jiné řešení, které se zdá být lepší, protože zachytává chyby od prepare i od execute najednou. Pro příklad:

public function query($SQL,$params)
{
try
{
$this->connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTI ON);
$query = $this->connection->prepare($SQL);
$query->execute($params);
$result = $query->fetchAll();

return $result;
}
catch(PDOexception $e)
{
echo $e->getMessage();
exit;
}
}

Zatím mi tohle řešení funguje dobře , ale jestli existuje ještě lepší řešení, tak se rád přiučim :)
srigi
Profil
CZFilip
Chytanie vynimiek uplne postacuje.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: