Чтобы понять сообщение об ошибке от pg_last_error в PHP - PullRequest
0 голосов
/ 09 августа 2009

Пожалуйста, посмотрите этот ответ, чтобы увидеть основную проблему .


Как решить следующее сообщение об ошибке в подготовленном утверждении?

У меня есть index.php, в который я помещаю данные через множество обработчиков. Следующее сообщение об ошибке появляется по следующему URL-адресу, который является URL-адресом после формы входа.

http://localhost/codes/index.php?ask_question&email=masi.masi@gmail.com&passhash_md5=202cb962ac59075b964b07152d234b70

Этот вопрос основан на этой теме . Я получаю ту же ошибку, что и Даниил:

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.

в коде 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']));

Я изменил handle_login.php по совету Даниила на

 $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']));

Я все еще получаю то же сообщение об ошибке.

1 Ответ

1 голос
/ 09 августа 2009

Готовится ли ваша собственная реализация? Выдает ли это исключение?

попробуйте это

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

Edit:
Получил ответ в первом комментарии

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

pg_ last _ error (извините, подчеркивание создает формат cursiv)

...