Mysqli - Insert id

Eléphant du PHP | 281 Messages

14 sept. 2006, 14:46

Bonjour,

J'effectue des enregistrements dans une base de données. Pour cela je cré un objet mysqli que j'utilise pour effectuer mes requêtes :
<?php
$subject = $db->quote($_POST['subject']);
$message = $db->quote($_POST['message']);

$user_id = $_SESSION['user']['id'];
$forum_id = isset($_GET['forum_id']) ? $_GET['forum_id'] : 1;

$query = "INSERT INTO forum_topics VALUES ('', '".$forum_id."', '".$user_id."', NOW(), ";
$query .= "'".$subject."', '', NOW(), '".$user_id."', '', '', '', '')";
$db->query($query);
$topic_id = $db->insert_id;

$query = "INSERT INTO forum_posts VALUES ('', '".$topic_id."', '".$user_id."', ";
$query .= "'".$_SERVER['REMOTE_ADDR']."', NOW(), NOW(), '', '".$message."')";
$db->query($query);
$post_id = $db->insert_id;

$db->query("UPDATE forum_topics SET last_post_id='".$post_id."' WHERE forum_topic_id='".$topic_id."'");
?>
Mon problème réside dans le fait qu'à un moment j'ai besoin de récupérer le dernier identifiant d'enregistrement, pour cela j'utilise mysqli_insert_id(), mais il m'est retourné deux erreurs :

Warning: main() [function.main]: Couldn't fetch DatabaseMysqli in E:\www\Doeeng\forum\post.php on line 9

Warning: mysqli_insert_id() [function.mysqli-insert-id]: Couldn't fetch DatabaseMysqli in E:\www\Doeeng\forum\post.php on line 12

La ligne 9 et la ligne 12 correspondent respectivement à :
$topic_id = $db->insert_id;
et
$post_id = $db->insert_id;
DatabaseMysqli correspond à une classe étendant les fonctionnalités de mysqli.

Ps : Les insertions fonctionnent correctement. A part les valeurs récupérées avec inset_id qui sont pas correctes (= 0).

J'ai bien re-regardé le manuel php pour vérifier si je n'avais pas fait une mauvaise utilisation, mais je ne vois pas mon erreur. De même impossible de trouver une information m'aidant à comprendre mon erreur à partir de l'erreur affichée.

Quelqu'un saurait-il m'en dire plus ?

Merci d'avance :wink:

@+

Eléphant du PHP | 281 Messages

14 sept. 2006, 21:28

Personne n'a une idée ? :roll:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 sept. 2006, 21:30

Est-ce que tu peut nous montrer la classe dont $db est une instance ? ;)

Surtout le constructeur et la methode last_id. :roll:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 281 Messages

14 sept. 2006, 23:26

Surtout le constructeur et la methode last_id. :roll:
Ehé merci Zeus (t'es un dieu :lol:) , ça vient de me faire tilte dans ma p'tite tête. Je cherchais comme un idiot, en fait dans le morceau de code posant problème :

Code : Tout sélectionner

$topic_id = $db->insert_id;
C'est effectivement un champs auquel je fais appel. Forcemment, étant donné qu'il s'agit d'une méthode dans ma classe, ça ne pouvait pas marcher :roll:

Merci merci.

@+

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 sept. 2006, 08:15

ouah eh !!! :shock:

Je suis trop fort en fait :langue:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer