2009-08-09 7 views
0

Veuillez vous reporter au this answer to see the main problem.Pour comprendre un message d'erreur de pg_last_error en PHP


Comment pouvez-vous résoudre le message d'erreur suivant dans l'instruction préparée?

J'ai un index.php auquel je mets des données à travers de nombreux gestionnaires. Le message d'erreur suivant s'affiche à l'URL suivante qui est une URL après un formulaire de connexion. Cette question est basée sur le this thread. Je reçois une erreur semblable que Daniel:

Warning: pg_prepare() [function.pg-prepare]: Query failed: ERROR: prepared statement "query11" already exists in /var/www/codes/handlers/handle_login_status.php on line 6 
Prepared statement failed. 

dans le code handle_login.php

$dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123"); 
$result = pg_prepare($dbconn, "query11", "SELECT passhash_md5 FROM users 
      WHERE email=$1;"); 
$passhash_md5 = pg_execute($dbconn, "query11", array($_POST['email'])); 

J'ai changé le handle_login.php par les morceaux de conseils de Daniel à

$dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123"); 
try{ 
    $result = pg_prepare($dbconn, "query11", "SELECT passhash_md5 FROM users 
     WHERE email=$1;"); 
    if($result){ 
     $result->rayPrepared['query11'] = true; // I changed $this to $result 
    }else{ 
     throw new Exception('Prepared statement failed.'); 
    } 
}catch(Exception $e){ 
    echo $e->getMessage(); 
} 
$passhash_md5 = pg_execute($dbconn, "query11", array($_POST['email'])); 

Je reçois toujours le même message d'erreur.

+2

quel est votre postgre version? Manuel PHP dit que cela ne fonctionne que pour 7.4 et plus. – Zed

+0

@Zed: PostgreSQL 8.3.7 sur i486-pc-linux-gnu, compilé par GCC gcc-4.3.real (Ubuntu 4.3.3-5ubuntu4) 4.3.3 –

+0

Je ne sais pas ce qui s'est passé, mais après avoir écrit plus de code et enlever les vieilles jonques le problème a disparu. - Je rapporterai si ça revient. - Merci pour vos réponses! –

Répondre

1

Est-ce que vous préparez votre propre implémentation? Est-ce qu'il lance une exception?

essayer cette

if(is_null($result)) { 
throw new Exception("No valid Result"); 
} 

Edit:
obtenu la réponse dans le premier commentaire

"Any error in the prepare is available from pg_last_error()." 

pg_ last _ error (désolé, le soulignement créer le format Cursiv)

+0

Si vous voulez dire préparer pg_prepare, alors pg_prepare n'est pas ma propre implémentation. Cela ne semble pas être une exception. Je me jette un avertissement. –

+0

Vous pouvez le trouver ici http://fi2.php.net/manual/fr/fonction.pg-prepare.php –

+0

J'ai ajouté votre premier code. J'ai la même erreur qu'avant. –

Questions connexes