2009-08-29 10 views
0

Comment vérifier si une ressource est fausse dans PHP pg query params?Vérification de la valeur de retour de pg_query_params par PHP

J'exécutez le code suivant, sans succès,

$row = pg_num_rows ($result); 
if ($row !== 0) 
     echo "hurray"; 
else 
     echo "argh"; 

Il me donne les avertissements suivants

Warning: pg_query_params() [function.pg-query-params]: Query failed: ERROR: invalid input syntax for integer: "" in /var/www/codes/index.php on line 120 

J'utilise $dbconn ce qui est correct de sorte que le second avertissement semble n'être qu'un symptôme. La cause de ceci est le type non valide pour un nombre entier.

Ma requête est ce

$dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123"); 
$result = pg_query_params ($dbconn, 
    'SELECT question_id 
    FROM questions 
    WHERE question_id = $1', 
    array ($question_id) 
); 
+0

Il semble y avoir un problème avec la requête que vous transmettez à pg_query_params(). Il est préférable que vous annuliez la modification, de sorte que les réponses ci-dessous continuent à avoir du sens, et postez une nouvelle question. Et n'oubliez pas d'inclure l'appel pg_query_params (...) exact qui provoque l'erreur, sinon on ne peut que deviner quel est le problème. – Inshallah

Répondre

3

Essayez ceci:

$result = @pg_query_params($dbconn, "SELECT * FROM SOME_TABLE", array()); 
if($result !== FALSE) 
{ 
    $row = @pg_num_rows($result); 
    if ($row !== 0) 
     echo "hurray"; 
    else 
     echo "argh"; 
} 
else 
{ 
    echo "Seems, your query is bad."; 
} 

Avant d'utiliser $ résultat, vous devez vérifier.

+0

Bien que l'utilisation de! == pour vérifier FALSE est généralement une bonne idée, dans ce cas, cela n'a pas vraiment d'importance. Le résultat de la requête ne sera jamais un faux de plus que FALSE booléen. – Inshallah

+0

** Quel est le but de @ dans vos commandes? ** –

+1

@ - prévenir les rapports d'erreurs/avertissements/avis –

1

Lorsque vous dites "Requête NULL", je suppose que vous voulez dire une requête qui n'affecte ni ne retourne aucune ligne de résultat.

Toute requête réussie aboutira toujours à une ressource de résultat de requête valide, qui sera toujours vraie, que des lignes aient été affectées ou renvoyées ou non. Pour voir si la requête a été appliquée avec succès à une ou plusieurs lignes, vous devez utiliser pg_affected_rows (UPDATE/INSERT/DELETE) ou pg_num_rows (SELECT).

+0

J'ai trouvé un bug dans mon code concernant l'utilisation de 'pg_num_rows'. S'il vous plaît, voir ma question mise à jour. –

+0

Je lance la requête, 'SELECT * FROM questions', dans Psql et fonctionne bien. - Le problème n'est pas dans la requête à mon avis. –

Questions connexes