PHP插入表不创建新的数据行
Posted
技术标签:
【中文标题】PHP插入表不创建新的数据行【英文标题】:PHP Insert into table not creating new line of data 【发布时间】:2017-07-18 12:35:34 【问题描述】:我是 php 新手,我正在尝试将数据从嵌套数组插入数据库。我注意到只有最后一个 key: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')";
为简单起见,我要做的就是将“one”和“abc”放入 alpha 和 beta 中。然后让表格的另一行输入“one”和“ghi”。但是当我运行代码时,我得到的只是“one”和“ghi”。但是,当我放一个 echo 语句时,所有正确的东西都会被打印出来。只是不明白为什么他们没有输入我的表格。
我做错了什么?谢谢!
【问题讨论】:
你在哪里执行SQL语句?如果您在循环之外执行此操作,它只会插入最后一个值,因为$sql
每次通过循环时都会被覆盖。
【参考方案1】:
$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 调用中启用多个语句。
【讨论】:
这只有在他们使用 mysqli 的 multi_query 时才有效。最好在循环内运行sql语句。 @aynber 你是对的,但如果我以这种方式回答,那么我将无法解决作为提问者问题根源的更深刻的错误。 @aynber 我已经编辑了我的问题以添加您的想法,因为您是对的,这是更好的方法。以上是关于PHP插入表不创建新的数据行的主要内容,如果未能解决你的问题,请参考以下文章