繁体   English   中英

如何在PHP数组中将值存储为MySQL中的多个记录

[英]How to store values in a PHP array as multiple records in MySQL

我创建了一个PHP函数,将数据插入到MySQL表中。 传递给函数的值之一是数组。 该数组仅包含唯一值。 当我运行脚本时,它将一条记录保存到表中,并且该字段对应于存储所有数组值的数组。

这是我的函数,它在单独的类文件中:

public function importTest($val1,$valArray,$val3){

    try {

        $stm = $this->dbSt->prepare('INSERT INTO table (val1,valArray,val3) VALUES (:val1,:valArray,:val3)');

        $stm->bindParam(':val1',$val1);
        $stm->bindParam(':valArray',$valArray);
        $stm->bindParam(':val3',$val3);

        if($stm->execute()){

            return true;
        }

    }catch (PDOException $e) {

        echo $e->getMessage();
    }


    return false;

}

设置$test并回显屏幕以进行测试。 这将显示我正在寻找的数组中的所有唯一值。

$test = implode("<br />", (array_keys($array_unique_guests)));

echo 'TEST:<br /> '.$test.' <br />';  // Displays all unique values
echo '<br /><br />';

这是我在调用函数的地方:

$importTest = $statsDao->importTest($getSites[$x]['site_id'],$test,$updateDate);

我正在使用for循环来获取$getSites值,该值调用了另一个函数。

我需要将所有值作为$ test回显到上面的屏幕中,以另存为表中的新记录。 而是将它们全部添加到一个记录中。

我想插入的行数与数组中的值一样多。 此数字将更改,但是例如,如果数组中有10个值,则应该在表中添加10条记录,以及日期和另一个字段。 基本上,我想在脚本运行时检索数组中的所有值并为每个记录创建一个新记录。

我希望这很清楚。 我已经坚持了一段时间,希望有人可以帮忙!

谢谢!

将数组传递给函数,而不是传递的字符串,然后在函数中使用循环。

public function importTest($val1,$valArray,$val3){

    try {

        $stm = $this->dbSt->prepare('INSERT INTO table (val1,valArray,val3) VALUES (:val1,:val2,:val3)');

        $stm->bindParam(':val1',$val1);
        $stm->bindParam(':val2',$val2);
        $stm->bindParam(':val3',$val3);

        foreach ($valArray as $val2) {
            $stm->execute();
        }
    }catch (PDOException $e) {
        echo $e->getMessage();
        return false;
    }
    return true;
}

您直接通过以下方式传递数组:

$statsDao->importTest($getSites[$x]['site_id'], array_keys($array_unique_guests), $updateDate);

到目前为止,我可以从标题中猜到

 $inser = "INSERT INTO table_name(id,name,pass) VALUES";
    $valuearray = array( // the array composed of values that you have prepared
          [  
            "id"  => 1,
            "name" => "John Due",
            "pass" => "123456"
          ],
          [  
            "id"  => 2,
            "name" => "Jonathan",
            "pass" => "123456"
          ],
          [  
            "id"   => 3,
            "name" => "Jonny",
            "pass" => "123456"
          ]
    ); 
    foreach($valuearray as $val)
    {
      $inser .= "('".$val['id']."','".$val['name']."','".$val['pass']."')";
    }
    echo $inser;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM