php - 如何使用 PHP 将数据数组插入数据库?
问题描述
我得到如下的数组值
Array
(
[0] => Array
(
[upload_label] => label 1
[upload_name] => 100-best_1940225136.png
[society_id] => 57
)
[1] => Array
(
[upload_label] => label 2
[upload_name] => 150x150_2147441709.png
[s_id] => 57
)
)
现在我必须将数据插入数据库。所以我使用了下面的惰性代码
$sqlUpload="INSERT INTO `tbl_uploadAll`(upload_label,upload_name,s_id) VALUES (:upload_label,:upload_name,:s_id)";
$stmt= $pdo->prepare($sqlUpload);
$stmt->execute($dataupload);
当我按下按钮时,在网络选项卡中出现 500 错误
我的完整代码在这里
if (isset($_POST['send'])) {
$total = count($_FILES['docUpload']['name']);
$dataupload=array();
for($i=0; $i < $total; $i++) {
if(isset($_FILES['docUpload']['name'][$i]) && $_FILES['docUpload']['name'][$i] != "")
{
$foldername="profile";
$uploadLabel=$_POST['docUploadLabel'][$i];
$image1 = $_FILES['docUpload']['name'][$i];
$filename = basename($image1);
$onlyfile = pathinfo($filename, PATHINFO_FILENAME);
$extension = pathinfo($filename, PATHINFO_EXTENSION);
$file = mt_rand();// random number
$newname = $onlyfile.'_'.$file.'.'.$extension;
//$location='images/'.$foldername.'/'.$newname;
$location='../assets/images/uploads/'.$foldername.'/'.$newname;
if($extension=='png' || $extension=='jpg' || $extension=='jpeg') {
compressImage($_FILES['docUpload']['tmp_name'][$i],$location,60);
}
else{
move_uploaded_file($_FILES['docUpload']['tmp_name'][$i], $location);
}
$uploadDoc=$newname;
$dataupload[]=array(
'upload_label'=>$uploadLabel,
'upload_name'=>$uploadDoc,
's_id'=>$last_id,
);
}
}
echo"<pre>";
print_r($dataupload);
$sqlUpload="INSERT INTO `tbl_uploadAll`(upload_label,upload_name,s_id) VALUES (:upload_label,:upload_name,:s_id)";
$stmt= $pdo->prepare($sqlUpload);
$stmt->execute($dataupload);
}
解决方案
您正在传递数组数组
$stmt->execute($dataupload);
execute
需要一个 key => value 的数组,其中 key 应该被命名为占位符。喜欢
$data = [
'name' => $name,
'surname' => $surname,
'sex' => $sex,
];
因此,对于您的情况,您应该在 foreach 中执行
foreach ($dataupload as $row)
{
$stmt->execute($row);
}
推荐阅读
- python - Python - 输入一个列表并存储为列表而不是字符串
- .net-core - 如何在 .NET Core 中编写真正的集成测试?
- reactjs - React useHistory:只能在函数组件的主体内部调用 Hooks
- php - 在 laravel 中无法检索最后插入的记录 id
- javascript - 如何在我的场景中使某些变量成为全局变量?
- c++ - 如何覆盖 .dat 文件中的一行而不覆盖整个文件?C++
- amazon-web-services - 是否可以验证 aws v4 签名?
- apache-spark - Spark集群终止有钩子吗?
- node.js - 如何使用一个字段值更新猫鼬中的另一个字段值?
- sas - 在 sas 中使用带负变量的 sum 函数