【发布时间】:2019-01-10 18:48:42
【问题描述】:
我创建了一个 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 条记录添加到表中,以及一个日期和另一个字段。基本上,我试图检索数组中的所有值,并在脚本运行时为每个值创建一条新记录。
我希望这很清楚。我已经坚持了一段时间,希望有人能提供帮助!
谢谢!
【问题讨论】:
-
要开始传递
$test,它是一个字符串,因此请确保传递要存储的值数组。 -
所以基本上你试图生成类似
INSERT INTO ... VALUES(<value>),(<value>)[, ...]的东西,它可以在 MYSQL 中插入多条记录.. -
如果我理解的话,你想遍历数组,数组中的每个元素 - 使用该值向数据库添加一行?
-
是的,这是正确的 Jaquarh - 在表格中添加一行,其中包含数组中的每个元素。我不确定如何传入数组而不是字符串。