【问题标题】:Php save more Array into MySQLphp 将更多数组保存到 MySQL
【发布时间】:2019-06-09 19:17:57
【问题描述】:

我正在尝试使用PHP 将数组保存在MySQL 数据库中。

代码只插入第一行,如果我有 5 个元素的 array,它只会插入第一个元素和其他元素,而 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);

?>

【问题讨论】:

  • 什么是 count($day_array and $nDay_array and... and 使其成为布尔评估 - 你的意思是 $len 应该是什么?
  • 用于统计数组元素个数
  • 该语句中有多个数组,您指的是哪个计数?我想如果你只在第一个上使用 count 就可以了
  • 所以,我必须保存 5 个项目,当我把它们全部放好时,5 我只保存第一个项目。你为什么不把它们都保存下来?我如何计算所有数组?
  • 如果所有的长度都相同,则只计算一个。更好的做法是计算每个并分配$len 的最小值

标签: php mysql arrays explode


【解决方案1】:

当您尝试在多个数组上执行 count 时:

$len = count($day_array and $nDay_array and $timeOne_array and $timeTwo_array);

and 导致对数组进行布尔评估,因此对 $len 的最终分配为 1,这就是为什么循环只执行一次并且只有第一个元素插入 DB。

如果所有数组的长度相同,您应该只指望其中的 1 个:

$len = count($day_array)

更好的做法是对它们进行计数,然后为$len 分配最小值

【讨论】:

    【解决方案2】:

    改变这一行

    $len = count($day_array and $nDay_array and $timeOne_array and $timeTwo_array);
    

    $len = count($day_array) + count($nDay_array) + count($timeOne_array) + count($timeTwo_array);
    

    【讨论】:

      猜你喜欢
      • 2010-12-31
      • 2012-09-29
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多