Php将更多数组保存到MySQL中
我试图用Php将更多数组保存到MySQL中,php,mysql,arrays,explode,Php,Mysql,Arrays,Explode,我试图用PHP在MySQL数据库上保存数组 代码只插入第一行,如果我有一个包含5个元素的数组,它只插入第一个元素和其他元素,4个不为我保存它们 谁能告诉我哪里错了 非常感谢 <?php //getting user values $day = $_POST['Day']; $nDay = $_POST['n_Day']; $fieldOne = $_POST['Field_one']; $fieldTwo = $_POST['Field_two']; $timeOne = $_POST
PHP
在MySQL
数据库上保存数组
代码只插入第一行,如果我有一个包含5个元素的数组,它只插入第一个元素和其他元素,4个不为我保存它们
谁能告诉我哪里错了
非常感谢
<?php
//getting user values
$day = $_POST['Day'];
$nDay = $_POST['n_Day'];
$fieldOne = $_POST['Field_one'];
$fieldTwo = $_POST['Field_two'];
$timeOne = $_POST['Time_one'];
$timeTwo = $_POST['Time_two'];
$idR = $_POST['id_ristorante'];
$day_array = explode(",",$day);
$nDay_array = explode(",",$nDay);
$timeOne_array = explode(",",$timeOne);
$timeTwo_array = explode(",",$timeTwo);
$len = count($day_array and $nDay_array and $timeOne_array and $timeTwo_array);
$output=array();
//require database
require_once('db.php');
//checking if email exists
$conn=$dbh->prepare('SELECT id_ristorante FROM Orari WHERE id_ristorante=:idR');
$conn->bindParam(':idR', $idR, PDO::PARAM_STR);
$conn->execute();
//results
if($conn->rowCount() !==0){
$output['isSuccess'] = 0;
$output['message'] = "Orario già inserito";
} else {
for($i=0;$i<$len;$i++){
$day = $day_array[$i];
$nDay = $nDay_array[$i];
$timeOne = $timeOne_array[$i];
$timeTwo = $timeTwo_array[$i];
$conn=$dbh->prepare('INSERT INTO Orari (Day, n_Day, Field_one, Field_two, Time_one, Time_two, id_ristorante) VALUES (?,?,?,?,?,?,?)');
//encrypting the password
$conn->bindParam(1,$day);
$conn->bindParam(2,$nDay);
$conn->bindParam(3,$fieldOne);
$conn->bindParam(4,$fieldTwo);
$conn->bindParam(5,$timeOne);
$conn->bindParam(6,$timeTwo);
$conn->bindParam(7,$idR);
$conn->execute();
if($conn->rowCount() == 0) {
$output['isSuccess'] = 0;
$output['message'] = "Errore, riprova.";
} elseif($conn->rowCount() !==0){
$output['isSuccess'] = 1;
$output['message'] = "Orari salvati!";
}
}
}
echo json_encode($output);
?>
当您尝试在多个数组上执行计数时,如下所示:
$len = count($day_array and $nDay_array and $timeOne_array and $timeTwo_array);
和
会对数组进行布尔运算,因此对$len
的最终赋值为1,这就是为什么循环只执行一次,并且只将第一个元素插入DB的原因
如果所有数组长度相同,则只需将其中一个数组计算为:
$len = count($day_array)
更好的做法是对它们进行计数,然后用最小值分配$len
,更改此行
$len = count($day_array and $nDay_array and $timeOne_array and $timeTwo_array);
到
什么是计数($day_数组和$nDay_数组和…
和
使其成为布尔求值-你的意思是什么$len
应该是什么?它用于计算数组中的元素数该语句中有多个数组,你的意思是什么?我想如果你只对第一个数组使用count,我必须保存5项,当我将它们全部放入5时,我只保存第一项。为什么不全部保存?我如何计算所有数组?如果所有数组的长度相同,则只计算一个。更好的做法是对每个数组进行计数,并以最小值分配$len
$len = count($day_array) + count($nDay_array) + count($timeOne_array) + count($timeTwo_array);