PHP插入到表中,不创建新行数据
我是PHP新手,正在尝试将嵌套数组中的数据插入数据库。但我注意到,只有最后一个键:value被放入(似乎之前的所有内容都被覆盖了)。如何获得每一个数据的新行,以便将所有内容都放进去PHP插入到表中,不创建新行数据,php,mysql,arrays,database,insert,Php,Mysql,Arrays,Database,Insert,我是PHP新手,正在尝试将嵌套数组中的数据插入数据库。但我注意到,只有最后一个键:value被放入(似乎之前的所有内容都被覆盖了)。如何获得每一个数据的新行,以便将所有内容都放进去 $tmpArray = array(array("one" => abc, "two" => def), array("one" => ghi, "two" => jkl)); // Scan through outer loop foreach ($tmpArray as $inn
$tmpArray = array(array("one" => abc, "two" => def), array("one" => ghi, "two" => jkl));
// Scan through outer loop
foreach ($tmpArray as $innerArray) {
// Scan through inner loop
foreach ($innerArray as $key => $value) {
if ($key === 'one') {
$sql = "INSERT INTO test2 (alpha, beta) VALUES ('$key', '$value')";
}
}
}
简单地说,我所要做的就是把“一”和“abc”放在alpha和beta中。然后在表格的另一行输入“one”和“ghi”。但当我运行代码时,我得到的只是“一”和“ghi”。不过,当我放一个echo语句时,所有正确的内容都会打印出来。只是不明白他们为什么不把信息输入我的表格
我做错了什么?谢谢
$sql = "INSERT INTO test2 (alpha, beta) VALUES ('$key', '$value')";
此行每次调用变量$sql
时都会覆盖该变量的内容。您需要将字符串连接在一起:
$sql = '';
// Scan through outer loop
foreach ($tmpArray as $innerArray) {
// Scan through inner loop
foreach ($innerArray as $key => $value) {
if ($key === 'one') {
$sql .= "INSERT INTO test2 (alpha, beta) VALUES ('$key', '$value'); ";
}
}
}
正如注释中所建议的,更好的做法是直接执行查询,而不是将其存储在变量中。这样,您就不必将字符串连接在一起,也不必在一个MSQLI调用中启用多个语句。在哪里执行SQL语句?如果您在循环之外执行此操作,它将只插入最后一个值,因为
$sql
每次通过循环时都会被覆盖。这仅在他们使用mysqli的multi_查询时才有效。在循环中运行sql语句会更好。@aynber您是对的,但如果我以这种方式回答,那么我就无法解决提问者问题的根源——更深刻的错误。@aynber我编辑了我的问题以添加您的想法,因为您是对的,这是更好的解决方法。