2010-04-29 5 views
2

J'essaie de lier les paramètres d'entrée dans ma requête SELECT, puis de récupérer les lignes résultantes, mais MySQLi semble être différent des autres API auxquelles je suis habitué et je me perds dans le manuel PHP.Exemple de requête SELECT avec variables de liaison

L'approche suivante est-elle correcte?

$sql = 'SELECT product_id, product_name, area_id 
    FROM product 
    WHERE product_id = ?'; 
$stmt = $myMySQLi->prepare($sql); 
if(!$stmt){ 
    throw new Exception('Prepare error'); 
} 
if([email protected]$stmt->bind_param('i', $product_id)){ 
    throw new Exception('Bind error'); 
} 
if(!$stmt->execute()){ 
    throw new Exception('Execute error'); 
} 

Si c'est le cas, comment puis-je récupérer des lignes dans des tableaux associatifs? Si je suis trop compliqué, comment dois-je procéder?

Répondre

3

mysqli ne fournit pas un moyen de récupérer les résultats dans un tableau. Si vous voulez cette fonctionnalité, vous avez deux options:

  1. étendre mysqli et écrire une méthode fetchAll
  2. utilisation pdo désormais

indice: utilisation pdo

juste essayer de faire votre la vie plus facile.

read this

+0

Je ne voulais pas dire toutes les lignes à la fois, juste rangée par ligne, comme MySQLi_Result :: fetch_assoc(). Merci pour le lien: Je ne pouvais pas trouver un moyen d'obtenir un MySQLi_Result à partir d'un MySQLi_STMT et il semble que ... vous ne pouvez pas! Dieu merci, le projet est à un stade précoce et je peux encore me débarrasser de MySQLi. –

+0

si vous pouvez aller avec pdo je le recommande fortement. – Galen

+0

J'ai jeté MySQLi. Je ne peux plus retarder ce projet, donc je m'en tiendrai à ma bonne vieille classe personnalisée construite sur les fonctions MySQL habituelles. Au prochain projet, je vais essayer le PDO. –

3

En utilisant bind_result vous pouvez mapper des résultats variables:

$stmt->bind_result($product_id, $product_name, $area_id); 
while ($stmt->fetch()) { 
    echo $product_id . ": " . $product_name; 
} 
+0

Oh mon ... qui est si primitive ... Il est la première fois que je l'utilise MySQLi et je déteste déjà les os. Merci. –