2010-11-26 7 views
1

Je veux à l'utilisation de résultat de requête à une autre requête avec IN():En utilisant le résultat de la requête à une autre requête avec IN()

foreach($result as $key=>$value){ 
    $id .= $value['id'];} 

$sql2 = 'SELECT * FROM table where id IN($id)'; 

mais le $ id doit être 'ID1, ID2, id3' format. Avec $id .= $value['quiz_id'].' , '; il y a une virgule après le dernier identifiant. Comment puis-je convertir la valeur $ id en 'id1, id2, id3'. Merci à l'avance

Répondre

2
foreach($result as $key=>$value){ 
    $idArr[] = $value['id'] 
} 

$idStr = implode(',', $idArr); 

$sql2 = 'SELECT * FROM table where id IN($idStr)'; 

Cela vous donnera une chaîne séparée par des virgules ids que vous pouvez utiliser dans votre IN() requête.

Espérons que ça aide

+0

@TheNone Je voudrais intégrer les lignes de code supplémentaires que @Pekka a donné dans son exemple. Cela arrêtera toutes les erreurs dans le cas où aucun ID n'est retourné. :) – martynthewolf

4

Utilisez un tableau:

$ids = array(); 
foreach($result as $key=>$value){ 
$ids[] = $value['id'];} 

if (count($ids) > 0) // to avoid mySQL error on empty array 
{ 
    $ids_string = implode(",", $ids); 
    $sql2 = 'SELECT * FROM table where id IN($ids_string)'; 
} 
Questions connexes