2010-06-22 18 views
0

code:insertion de plusieurs lignes avec boucle

for($i = 1; $i <= $arr['var']; $i++) { 

    if($i == $arr['var']): 

    $insert .= '('.$n_id.', 12)'; 

    else: 

    $insert .= '('.$n_id.', 12),'; 

    endif; 

} 

$uz = mysql_query("INSERT INTO `cars` 
        (n_id, auto_id) 
        VALUES 
        '$insert'") or die(mysql_error()); 

Pourquoi il me donne une erreur de syntaxe SQL? Qu'est-ce que je fais mal?

+0

À quoi l'insertion est-elle initialisée avant d'entrer dans cette boucle? Vous voulez probablement vous assurer qu'il est défini sur la chaîne vide. –

Répondre

1

Vous êtes absent de chaîne dans concaténation l'instruction INSERT:

$uz = mysql_query("INSERT INTO `cars` 
        (n_id, auto_id) 
        VALUES " 
        . $insert .") or die(mysql_error()); 

C'est en supposant que vous n'êtes pas aussi rencontrez un problème avec la virgule de fin pour le soutien de tuple.

+0

Tout à fait raison, merci beaucoup. –

+0

Pourquoi votre wiki de communauté répond-il? –

+0

@MrXexxed: Mon choix, parce que je ne suis pas 100% sur mon PHP –

-1

Utiliser les guillemets (autour des voitures) est incorrect lorsqu'il est mélangé avec des guillemets simples (autour de $ insert), à ma connaissance, dans mySQL. Choisissez l'un ou l'autre - des guillemets simples sont probablement recommandés pour la normalisation.

+0

-1: Non-sens.Les backticks délimitent les noms de champs, tandis que les guillemets simples délimitent les chaînes. –

-1

Sur General SQL Management donne cet exemple pour un insert dans:

INSERT INTO [table] 
([field1], [field2], [field3]) VALUES 
('[value1.1]', '[value1.2]', '[value1.3]'), 
('[value2.1]', '[value2.2]', '[value2.3]'), 
('[value3.1]', '[value3.2]', '[value3.3]'), 
etc. 

Vous pourriez avoir des problèmes de syntaxe. Je recommande d'imprimer

"INSERT INTO `cars` 
     (n_id, auto_id) 
     VALUES 
     '$insert'" 

pour voir ce que vous envoyez.

+0

-1: N'a pas identifié la panne. –

0
  • Votre requête, non expansées, est la suivante:

    INSERT INTO `cars` (n_id, auto_id) VALUES '$insert' 
    

    Puis, avec $insert expansées, il semble probablement quelque chose comme ceci:

    INSERT INTO `cars` (n_id, auto_id) VALUES '(1,12),(2,12),(3,12)'; 
    
  • Les guillemets simples (') autour la liste de données ne devrait pas être là, car les guillemets simples délimitent les chaînes.

  • Au lieu de cela, vous voulez:

    INSERT INTO `cars` (n_id, auto_id) VALUES (1,12),(2,12),(3,12); 
    

    Re-effondrement qui dans votre PHP, vous vous retrouvez avec:

    INSERT INTO `cars` (n_id, auto_id) VALUES $insert 
    

tl; dr: supprimer le ' s.

Questions connexes