2012-06-15 2 views
0

J'essaie de convertir MySQL en MySQLi. Et je ne peux pas comprendre pourquoi il freine surComment implémenter les instructions préparées imbriquées MySQLi?

$stmt2->execute(); 

et renvoie l'erreur:

Call to a member function execute() on a non-object

Toute question ou valide la mise en œuvre de celui-ci !?

// SQL condition "WHERE group=''" where `group` is empty (NULL) 
$result = "SELECT id, name FROM table WHERE group='' ORDER BY array ASC"; 

if ($stmt = $mysqli->prepare($result)) { 
    $stmt->execute(); 
    $stmt->bind_result($id, $name); 

    while ($stmt->fetch()) { 
     // SQL condition "WHERE group='$id'" where $id defined in $stmt->bind_result($id, $name); 
     $result2 = "SELECT name FROM table WHERE group='$id' ORDER BY array ASC"; 

     $stmt2 = $mysqli->prepare($result2); 
     //$valid_stmt2 = $stmt2 === FALSE ? false : true; 

     echo $name . "\n"; 

     //if ($valid_stmt2) { 
      // Error cased on $stmt2->execute(); 
      $stmt2->execute(); 
      $stmt2->bind_result($name2); 

      while ($stmt2->fetch()) { 
       echo 'related to: ' . $name2 . "\n"; 
      } 

      $stmt2->close(); 
     //} 
    } 

    $stmt->free_result(); 
    $stmt->close(); 
} 

Cette question pourrait être liée à Possible to use multiple/nested MySQLi statements? Malheureusement, je ne trouve pas utile car il ne fournit pas un exemple valide ou une ressource pour la délivrance.

Mise à jour: Exemple de code simplifié avec commentaires.

+0

@hakre Ce n'est pas une copie de http://stackoverflow.com/questions/8999691/call -to-a-member-function-execute-sur-un-non-objet. Je change '$ stmt2 = $ mysqli-> prepare (" CHOISIR l'URL, nom FROM liens WHERE groupe = '?' ORDER BY tableau ASC ");' et ajouté '$ stmt2-> bind_param (" i ", $ id); ', mais ça ne marche toujours pas. Tout le monde pourrait fournir un exemple de travail? La seconde 'while()' doit retourner les résultats de la requête en fonction de sa condition - un '$ id' d'abord' while() '. – Binyamin

+0

Ridicule comment la communauté voit cette question comme doublon exact à http://stackoverflow.com/questions/8999691/call-to-a-member-function-execute-on-a-non-object. Demande de re-vérification. – Binyamin

Répondre

0

vous la première fois

"SELECT id, url, name FROM links WHERE group='' ORDER BY array ASC" 

Ensuite, vous voulez utiliser le $id pour faire

"SELECT url, name FROM links WHERE group='$id' ORDER BY array ASC" 

Comment pourrait obtenir le résultat pour cela? Si le groupe est égal à la chaîne vide, alors il ne sera pas égal à $id (seulement si $id est une chaîne vide aussi mais c'est un non sens.)

+0

'echo" $ id $name ";' retournera la valeur "$ id'. Quel est le problème de le retourner dans '" SELECT url, nom FROM liens WHERE groupe = '$ id' ORDER BY tableau ASC "'? Aucun problème? – Binyamin

+0

@Binyamin Juste votre logique est câblée, 'group' ne sera pas' ''' 'et'' $ id'' en même temps. – xdazz

+0

@Binyamin Et si votre "$ id" n'est pas une valeur valide, votre sql sera erroné, utilisez plutôt un espace réservé. – xdazz

Questions connexes