//下面是我的代碼,已經(jīng)困擾我兩個星期了,希望大神幫忙解決。
//前端的表單為一個table表格,點擊“添加”按鈕會自動增加新的一行,然后是把所有行的數(shù)據(jù)寫入到數(shù)據(jù)庫,每行都有一個截圖字段。
<?php????
header("Content-Type:text/html;?charset=UTF-8");????
$arr_tcsj?=?$_POST['data']['tcsj'];????
$arr_tcry?=?$_POST['data']['tcry'];????
$arr_tcbm?=?$_POST['data']['tcbm'];????//用post接收的數(shù)據(jù),HTML中命名格式為name="data[tcbm][]",其余的也是
$arr_wtjt?=?$_FILES['file']['name'];????//此表單數(shù)據(jù)中有圖片文件,所以用了$_FILES接收,HTML中圖片處name="file[]"
$arr_wtsm?=?$_POST['data']['wtsm'];????
$arr_wtfl?=?$_POST['data']['wtfl'];????
$arr_wtxl?=?$_POST['data']['wtxl'];????
$arr_ssxt?=?$_POST['data']['ssxt'];????
$arr_zrr?=?$_POST['data']['zrr'];????
$arr_jssj?=?$_POST['data']['jssj'];????
$arr_yjsj?=?$_POST['data']['yjsj'];????
$arr_wtzt?=?$_POST['data']['wtzt'];????
$arr_sfcf?=?$_POST['data']['sfcf'];????
$arr_bz?=?$_POST['data']['bz'];????
//數(shù)據(jù)庫信息????
$host?=?"localhost";????
$dbName?=?"xtyw";???
?$userName?=?"root";????
?$password?=?"123456";????
?//連接到數(shù)據(jù)庫服務(wù)器????
?$conn?=mysqli_connect($host,$userName,$password,$dbName);?
?//連接并返回????
?if?(!$conn)?{?????
??die("Connection?failed:?"?.?mysqli_connect_error());????
??}else{??????
??echo?"連接成功".?"<br>";?????
???for($i=0;$i<count($arr_tcsj);$i++){????????
???$insert[$i]['tcsj']=$arr_tcsj[$i];????????
???$insert[$i]['tcry']=$arr_tcry[$i];????????
???$insert[$i]['tcbm']=$arr_tcbm[$i];????????
???$insert[$i]['file']=$arr_wtjt[$i];????//注意此處是圖片文件??????
???$insert[$i]['wtsm']=$arr_wtsm[$i];????????
???$insert[$i]['wtfl']=$arr_wtfl[$i];????????
???$insert[$i]['wtxl']=$arr_wtxl[$i];????????
???$insert[$i]['ssxt']=$arr_ssxt[$i];????????
???$insert[$i]['zrr']=$arr_zrr[$i];????????
???$insert[$i]['jssj']=$arr_jssj[$i];????????
???$insert[$i]['yjsj']=$arr_yjsj[$i];????????
???$insert[$i]['wtzt']=$arr_wtzt[$i];???????
???$insert[$i]['sfcf']=$arr_sfcf[$i];????????
???$insert[$i]['bz']=$arr_bz[$i];????????
???//解決插入數(shù)據(jù)庫中文數(shù)據(jù)的亂碼問題????????
???$query?=?"set?names?utf8";????????
???$result?=?$conn->query($query);????????
???//?允許上傳的圖片后綴????????
???$allowedExts?=?array("gif",?"jpeg",?"jpg",?"png");????????
???$temp?=?explode(".",?'$_FILES["file"]["name"]');????????
???$extension?=?end($temp);?????
???//?獲取文件后綴名????????
???if?((($_FILES["file"]["type"]?==?"image/gif")????????
???||?($_FILES["file"]["type"]?==?"image/jpeg")????????
???||?($_FILES["file"]["type"]?==?"image/jpg")????????
???||?($_FILES["file"]["type"]?==?"image/pjpeg")????????
???||?($_FILES["file"]["type"]?==?"image/x-png")????????
???||?($_FILES["file"]["type"]?==?"image/png"))????????
???&&?($_FILES["file"]["size"]?<?204800)???//?小于?200?kb????????
???&&?in_array($extension,?$allowedExts))????????{????????????
???if?($_FILES["file"]["error"]?>?0)????????????{????????????????
???echo?"錯誤::?"?.?$_FILES["file"]["error"]?.?"<br>";????????????
???}????????????else????????????{????????????????
???echo?"上傳文件名:?"?.?$_FILES["file"]["name"]?.?"<br>";????????????????
???echo?"文件類型:?"?.?$_FILES["file"]["type"]?.?"<br>";???????????????
????echo?"文件大小:?"?.?($_FILES["file"]["size"]?/?1024)?.?"?kB<br>";???????????????
?????echo?"文件臨時存儲的位置:?"?.?$_FILES["file"]["tmp_name"]?.?"<br>";???????????????
??????//?判斷當(dāng)期目錄下的?upload?目錄是否存在該文件???????????????
???????//?如果沒有?upload?目錄,你需要創(chuàng)建它,upload?目錄權(quán)限為?777????????????????
???????if?(file_exists("upload/"?.?$_FILES["file"]["name"]))????????????????{????????????????????
???????echo?$_FILES["file"]["name"]?.?"?文件已經(jīng)存在。?";????????????????
???????}????????????????else????????????????{????????????????????
???????//?如果?upload?目錄不存在該文件則將文件上傳到?upload?目錄下????????????????????
???????move_uploaded_file($_FILES["file"]["tmp_name"],?"upload/"?.?$_FILES["file"]["name"]);????????????????????
???????echo?"文件存儲在:?"?.?"upload/"?.?$_FILES["file"]["name"];????????????????
???????}???????????
???????}????????
???????}????????
???????else????????{????????????
???????echo?"非法的文件格式";????????
???????}????????
???????$valueStr?=?'';??//必須在foreach外聲明,否則只會錄入最后一條數(shù)據(jù)。???????
???????foreach($insert?as?$v){??
???????//三維數(shù)組轉(zhuǎn)換成二維數(shù)組????????$valueStr?.=?"('".$v['tcsj']."','".$v['tcry']."','".$v['tcbm']."','".$v['file']."','".$v['wtsm']."','".$v['wtfl']."','".$v['wtxl']."','".$v['ssxt']."','".$v['zrr']."','".$v['jssj']."','".$v['yjsj']."','".$v['wtzt']."','".$v['sfcf']."','".$v['bz']."')";
???????//循環(huán)拼接添加數(shù)據(jù)????????
???????//$valueStr=?'('.implode('),(',?$valueStr).')';????????
???????$valueStr?=?rtrim($valueStr,',');//去除字符串最后的','??????
???????}????????
???????$sql?=?"insert?into?wtlr?(tcsj,tcry,tcbm,wtjt,wtsm,wtfl,wtxl,ssxt,zrr,jssj,yjsj,wtzt,sfcf,bz)?values?$valueStr";????????
???????//$sql?.=?"insert?into?wtlr?(tcsj,tcry,tcbm,wtjt,wtsm,wtfl,wtxl,ssxt,zrr,jssj,yjsj,wtzt,sfcf,bz)?values?$valueStr";????????
???????//?$sql=mysqli_query("insert?into?wtlr(tcsj,tcry,tcbm,wtjt,wtsm,wtfl,wtxl,ssxt,zrr,jssj,yjsj,wtzt,sfcf,bz)values('$insert[$i]['tcsj']','$insert[$i]['tcry']','$insert[$i]['tcbm']','$insert[$i]['file']','$insert[$i]['wtsm']','$insert[$i]['wtfl']','$insert[$i]['wtxl']','$insert[$i]['ssxt']','$insert[$i]['zrr']','$insert[$i]['jssj']','$insert[$i]['yjsj']','$insert[$i]['wtzt']','$insert[$i]['sfcf']','$insert[$i]['bz']')");????????
???????//?if($sql) ??????
???????//??echo?'1';????
???????}????
????????print_r($sql);?????
????????if(mysqli_query($conn,$sql)?==?false)?????{?????????
????????echo?"數(shù)據(jù)庫插入出錯!錯誤代碼:".mysqli_errno($conn);????????
????????mysqli_close($conn);?????????
????????var_dump(count($arr_tcsj));?????
????????}else{???????echo?"數(shù)據(jù)庫插入成功!";?????
????????}??????
????????echo?"<pre>";??????
????????print_r($insert);??????
????????var_dump($arr_wtjt);?????
????????}
?????????>
2019-06-28
表單提交中含有文件類型,一般都是先通過異步請求,將文件上傳至服務(wù)器,然后返回文路徑給前端放到表單里面的