[英]Mysql/PHP - How to add the array values into a database from a form
Can anyone see what I am doing wrong? 谁能看到我在做什么错? I am trying to add multiple values from an array into a sql table using the code below: 我正在尝试使用以下代码将数组中的多个值添加到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."'
)";
}
For whatever reason, only the last values is being stored in the table. 出于任何原因,表中仅存储了最后一个值。 What am I missing here? 我在这里想念什么?
With the usual caveats about the deprecation of this method (mysql_), something like this should work (I might have mucked up the syntax a tiny bit) 对于不赞成使用此方法的常见警告(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,',').";";
As shown in comments, it's irresistible to propose you to test this, for prepared statements of PDO, as you loop: 如注释中所示,在您循环执行时,建议您针对准备好的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]
));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.