2010-09-29 56 views
0

我想向INSERT语句添加另一个值,但无论我做什么,它都会导致各种错误。有人能告诉我正确的方式来编码吗?为数据库查询添加值

我原来的工作代码是这样的:

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

我曾尝试在其他之中:

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

也许我应该张贴我的代码生成结果:

$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); 

回答

0

多插入应该是我n中的格式:

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

该代码正在与1个项目的基础上,是有办法只包含另一个字段,在我的例子不造成错误?谢谢 – 2010-09-29 10:57:42

+0

@ Mr.Putersmit:'$ dept'和'$ box'的格式是什么? – Matt 2010-09-29 11:10:20

+0

Matt。 VARCHAR。如果它帮助我发布上面的代码。感谢 – 2010-09-29 11:20:12

1

你可以尝试这样的事情

$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的正确转义 – knittl 2011-06-27 09:18:42