PHP插入到表中,不创建新行数据

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

我是PHP新手,正在尝试将嵌套数组中的数据插入数据库。但我注意到,只有最后一个键:value被放入(似乎之前的所有内容都被覆盖了)。如何获得每一个数据的新行,以便将所有内容都放进去

 $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我编辑了我的问题以添加您的想法,因为您是对的,这是更好的解决方法。