2010-09-29 7 views
0

Je voudrais ajouter une autre valeur à une instruction INSERT, mais quoi que je fasse, cela provoque diverses erreurs. Quelqu'un peut-il me montrer la bonne façon de coder cela?Ajouter une valeur à la requête de base de données

Mon code de travail d'origine est la suivante:

$sql = "INSERT INTO `act` (`department`) VALUES ('". implode("'),('", $dept) . "')"; 

J'ai essayé entre autres:

$sql = "INSERT INTO `act` (`department`,`item`) VALUES ('". implode("'),('", $dept) . "','". implode("'),('", $box) . "')"; 

Peut-être que je devrais poster mon code qui produit le résultat:

$dept = array(); 
$box = array(); 

while ($row = mysql_fetch_array($result)) { 
      $dept[] = $row['department']; 
      $box[] = $row['custref']; 
} 

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 
header("Content-type: application/json"); 
$json = ""; 
$json .= "{\n"; 
$json .= "dept: [\"". implode('","', $dept). "\"],\n"; 
$json .= "box: [\"". implode('","', $box) ."\"]\n"; 
$json .= "}\n"; 
echo $json; 

$sql = "INSERT INTO `act` (`department`) VALUES ('". implode("'),('", $dept) . "')"; 
$result = runSQL($sql); 

Répondre

0

Inserts multiples doivent être i n le format:

INSERT INTO `act` (`department`, `item`) VALUES ('dept1', 'item1'), ('dept2', 'item2'), ('dept1', 'item1'), ('dept3', 'item3');, 

$insert = array(); 
for ($i=0; $i<sizeof($dept); $i++) { 
    $insert[] = '(\'' . $dept[$i] . '\',\'' . $box[$i] . '\')'; 
} 

$sql = "INSERT INTO `act` (`department`,`item`) VALUES " . implode(',', $insert); 
+0

sur la base que le code fonctionne avec le 1 point, est-il un moyen de simplement inclure un autre domaine comme dans mon exemple sans provoquant une erreur? merci –

+0

@ Mr.Putersmit: Qu'est-ce qui est dans le format de «$ dept» et «$ box»? – Matt

+0

Matt. varchar. Si ça aide, j'ai posté le code ci-dessus. merci –

1

vous pouvez essayer quelque chose comme ça

$sql="INSERT INTO `act` 
     (`department`,`box`) 
     VALUES 
    "; 

foreach($dept as $index => $value) 
{ 
    $sql.=" 
     (
      '".mysql_real_escape_string($value)."', 
      '".mysql_real_escape_string($box[$index])."' 
     ),"; 
} 

$sql=rtrim($sql,',') ; 
$result = runSQL($sql); 
+0

+1 pour s'être correctement échappé – knittl

Questions connexes