» »

[PHP] Kako ujeti exception

[PHP] Kako ujeti exception

Poldi112 ::

Imam objekt za dostop do baze (pretežno kopirano iz enega tutoriala). Stvar dela ok, edino če se kje pri query-ju zalomi tega ne vidim, ker ne znam ujeti napake. Objekt:

require_once ('database_connection.php');
class db extends db_connect
{
	public function Query($sql)
	{
		try
		{
			$this->open_connection();
			$sql = pg_query($sql);
		}
		catch(Exception $e)
		{
		   return $e;
		}
		$this->close_connection();
		return $sql;
	}
}


In uporaba, ki je očitno napačna, a sem probaval razne stvari in mi ni uspelo priti to tega svojega nesrečnega $e:

include_once('database.php');
$db = new db();

$query_komentar = "SELECT * FROM ne_obstaja";
try{
	$sql_komentar = $db->Query($query_komentar);
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

MisterR ::

mysql ne vrača exceptions.

Če uporabljaš PHP5 PDO potem imaš na voljo nekaj funkcij ampak sam jih ne uporabljam, če mi kaj ne štima pač izpišem query in to mi za testiranje zadostuje.

Poldi112 ::

PDO ne uporabljam, vsaj ne da bi vedel, imam pa postgres.
Zdaj za samo testiranje tudi sam izpišem query. Tisto, kar bi rad je, da imam neko potrditev, da je insert statement uspel. Najbolj smiselno se mi je zdelo to delati z exception-i.

Pred tem sem imel pg_query or die(...) in zdaj efektivno iščem nadomestek za ta die.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

Ziga Dolhar ::

PHP: pg_query - Manual

Če stvar fejla, ne vrže exceptiona, ampak vrne FALSE. Potem povprašaš pg_last_error() za dejansko napako.
https://dolhar.si/

Poldi112 ::

Izgleda da bo ok. Tnx. Sem imel v spominu, da se pri insertu oz. update-u ni ničesar vračalo, zdaj pa vidim, da dejansko pri uspelem vrne nek resource id, tako da stvar funkcionira:
$sql_komentar = $db->Query($query_komentar);
if (!$sql_komentar) {
  echo "An error occured.\n";
}


Last error sicer ne dela, ampak če si izpišem query ga vedno lahko direkt v postgres vržem in vidim, zakaj ne uspe.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

PHP povezava z Mysql

Oddelek: Izdelava spletišč
16915 (760) snooze77
»

C# INSERT statment ne vpise podatkov

Oddelek: Programiranje
111201 (1075) darkolord
»

Napaka pri povezavi z bazo - c#

Oddelek: Programiranje
71003 (867) Mitja Bonča
»

C# OleDB create database

Oddelek: Programiranje
71289 (1121) DubleG
»

Raziskava o ranljivosti spletnih strani z SQL bazami podatkov

Oddelek: Novice / Varnost
204915 (4251) sverde21

Več podobnih tem