INSERT SQL

WRInaute impliqué
Bonsoir à tous,

Bon d'avance c'est gros, mais je ne vois pas le problème c'est vraiment qu'il doit être sous mon nez. Je travaille sur la migration d'un forum fsb vers un phpbb. Première partie, les forums. Ben ma requête ne fonctionne pas, si une bonne âme pouvait m'aider, ça me permettrait d'aller dormir tranquille. Voilà le code

Code:
$sql = 'INSERT INTO phpbb_forums 
								(
								forum_id,
								parent_id,
								left_id,
								right_id,
								forum_parents,
								forum_name,
								forum_desc,
								forum_desc_bitfield,
								forum_desc_options,
								forum_desc_uid,
								forum_link,
								forum_password,
								forum_style,
								forum_image,
								forum_rules,
								forum_rules_link,
								forum_rules_bitfield,
								forum_rules_options,
								forum_rules_uid,
								forum_topics_per_page,
								forum_type,
								forum_status,
								forum_posts,
								forum_topics,
								forum_topics_real,
								forum_last_post_id,
								forum_last_post_subject,
								forum_last_post_time,
								forum_last_poster_name,
								forum_last_poster_colour,
								forum_flags,
								forum_options,
								display_subforum_list,
								display_on_index,
								enable_indexing,
								enable_icons,
								enable_prune,
								prune_text,
								prune_days,
								prune_viewed,
								prune_freq
								) 
								
								VALUES ';
								
foreach($forums as $key => $value)
{
	$sql .= '(															
				$value[forum_id],
				$value[parent_id],
				$value[left_id],
				$value[right_id],
				$value[forum_parents],
				$value[forum_name],
				$value[forum_desc],
				$value[forum_desc_bitfield],
				$value[forum_desc_options],
				$value[forum_desc_uid],
				$value[forum_link],
				$value[forum_password],
				$value[forum_style],
				$value[forum_image],
				$value[forum_rules],
				$value[forum_rules_link],
				$value[forum_rules_bitfield],
				$value[forum_rules_options],
				$value[forum_rules_uid],
				$value[forum_topics_per_page],
				$value[forum_type],
				$value[forum_status],
				$value[forum_posts],
				$value[forum_topics],
				$value[forum_topics_real],
				$value[forum_last_post_id],
				$value[forum_last_post_subject],
				$value[forum_last_post_time],
				$value[forum_last_poster_name],
				$value[forum_last_poster_colour],
				$value[forum_flags],
				$value[forum_options],
				$value[display_subforum_list],
				$value[display_on_index],
				$value[enable_indexing],
				$value[enable_icons],
				$value[enable_prune],
				$value[prune_text],
				$value[prune_days],
				$value[prune_viewed],
				$value[prune_freq]
				)';
				
	$query = mysql_query($sql);
	
	var_dump($sql);

Merchi
 
WRInaute accro
C'est effectivement assez gros. A chaque tour de ta boucle, tu rajoutes un nouvel ensemble de valeurs. La première fois ça donne INSERT (...) VALUES (ligne1), la deuxième fois INSERT (...) VALUES (ligne1)(ligne2) (sans virgule de séparation), etc.

Il faut que tu choisisses: soit tu fais un seul INSERT, et il te manque les virgules (mais pas à la fin évidemment), soit tu fais un seul INSERT par ligne, et il faut que tu rajoutes la liste des valeurs au INSERT de base.

Ceci dit, je partage l'avis de spout, répéter la liste des champs c'est sujet à erreurs. Et un bon mysql_real_escape_string est nécessaire aussi. La fonction qu'il donne résout les deux problèmes d'un coup.

Jacques.
 
WRInaute impliqué
Oui je ne fais plus de programmation depuis un petit temps et visiblement ça se perd vite. A propos du mysql_real_escape_string, j'en ai entendu parler dans ce contexte ... hier soir, après avoir posté ici, c'est en effet plus intéressant.

Merci pour vos réponses, combinées ça fonctionne bien et j'ai compris. :D

++
 
Discussions similaires
Haut