[PHP/Postgres] pg_query fout onderdrukken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • angl2k
  • Registratie: Maart 2001
  • Laatst online: 17-12-2024
ik ben bezig met een debug scriptje en daar heb ik mijn eigen error handler

link (let op, IE only)

het werkt allemaal fijn, de foutmeldingen komen mooi in de log, mysql foutmeldingen in het (hier niet zichtbare) mysql tab en ik wil dus de postgres fouten in de postgres tab.

echter er gaat blijkbaar iets mis met de error handler omdat de pg_query fout zowel in de 'normale' log venster komt als in mijn postgres tab. ik wil de foutmelding dus onderdrukken omdat ik deze zelf wil afhandelen.

PHP versie is 4.2.2, Postgres versie is 7.2.2

relevante code:

sample.php
PHP:
1
2
3
4
include("phpdebug.php");
$debug = new phpdebug();
$result = $debug->query("SELECT * FROM klant WHERE foo='bar'",__LINE__,"postgres");
echo $debug->printout(get_defined_vars());


phpdebug.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function phpdebug()
{
    error_reporting(E_ALL);
    function phpdebug_dummy($type,$msg,$file,$line)
    {
        // dlog is mijn interne log functie
        phpdebug::dlog($type,$msg . " in " . $file . " on line " . $line);
    }
    set_error_handler("phpdebug_dummy");
}
function query($query,$line = 0,$db_type = "mysql")
{
    $oldlevel = error_reporting(0);
    $resource = @pg_query($query);
    error_reporting($oldlevel);
    if(!$resource)
    {
        // genereer foutmelding in de postgres tab
    }
    // etc...
}

[ Voor 9% gewijzigd door angl2k op 23-10-2003 22:21 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Kan je iets beter uitleggen wat je bedoeld?
Wat zijn die 'tabs' waar je het over hebt?

En je krijgt foutmeldingen van de pg_query-functie, ondanks die @ en de error_reporting op 0 ??

Acties:
  • 0 Henk 'm!

  • angl2k
  • Registratie: Maart 2001
  • Laatst online: 17-12-2024
ja, ik krijg dus een warning dat mijn pg_query niet goed uit is gevoerd, die wil ik onderdrukken omdat ik met pg_last_error() de laatste foutmelding ophaal

[ Voor 24% gewijzigd door angl2k op 24-10-2003 00:44 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Bij mijn test:
PHP:
1
2
3
4
5
6
7
<?
        $conn = pg_connect("");

        pg_query($conn, "bestaat niet") or print("fout\n");

        @pg_query($conn, "bestaat niet") or print("ook fout\n");
?>
Warning: pg_query(): Query failed: ERROR: parser: parse error at or near "bestaat" at character 1
. in /home/acm/temp/pg-err.php on line 4
fout
ook fout
Gaat dat prima...

Dus wellicht wordt het tijd je php up te graden :?