0

谁能看到我做错了什么?我正在尝试使用以下代码将数组中的多个值添加到 sql 表中:

foreach($_POST['serialNumber'] as $i => $serialNumber) 
        { 
        // Get values from form.
            $request_id = mysql_real_escape_string($req_id);
            $serialNumber = mysql_real_escape_string($_POST['serialNumber'][$i]);
            $machineType = mysql_real_escape_string($_POST['machineType'][$i]);
            $machineModel = mysql_real_escape_string($_POST['machineModel'][$i]);

        // Add to database
        $sql = "INSERT INTO serialnumbers(
                request_id, serial_type, serial_model, serial_number
                ) VALUES (
                '".$request_id."','".$machineType."','".$machineModel."','".$serialNumber."'
                )";
        }

无论出于何种原因,只有最后一个值存储在表中。我在这里想念什么?

4

2 回答 2

0

有了关于弃用此方法(mysql_)的常见警告,这样的东西应该可以工作(我可能稍微弄乱了语法)

$values = array;

foreach($_POST['serialNumber'] as $i => $serialNumber) 
    { 
    // Get values from form.
        $request_id = mysql_real_escape_string($req_id);
        $serialNumber = mysql_real_escape_string($_POST['serialNumber'][$i]);
        $machineType = mysql_real_escape_string($_POST['machineType'][$i]);
        $machineModel = mysql_real_escape_string($_POST['machineModel'][$i]);

    // Add to database
    $values[] = "(
            '".$request_id."','".$machineType."','".$machineModel."','".$serialNumber."'
            )";
    }

$sql = "INSERT INTO serialnumbers(
            request_id, serial_type, serial_model, serial_number
            ) VALUES ".implode($values,',').";"; 
于 2013-10-25T16:31:05.110 回答
0

如评论中所示,当您循环时,建议您对 PDO 的准备好的语句进行测试是不可抗拒的:

//
// PDO
//
try {
  $pdo = new PDO("mysql:host=localhost;dbname=MyDatabase", $user, $pass);
} catch (PDOException $e) {
    echo $e->getMessage();
  exit;
}
//
$sql = "INSERT INTO serialnumbers (
    request_id, serial_type, serial_model, serial_number
  ) VALUES (
    :request_id, :serial_type, :serial_model, :serial_number
)";
//
$stmt = $pdo->prepare($sql);

$n = count($_POST['serialNumber']);

for($i = 0; $i < $n; $i++)
{ 
  // Get values from form.
  $stmt->execute(array(
    ":request_id" => $req_id,
    ":serial_type" => $_POST['machineType'][$i],
    ":serial_model" => $_POST['machineModel'][$i],
    ":serial_number" => $_POST['serialNumber'][$i]
  ));
}
于 2013-10-25T16:38:31.047 回答