gpt4 book ai didi

php - 带有foreach循环的mysql数据插入

转载 作者:行者123 更新时间:2023-11-29 04:47:57 25 4
gpt4 key购买 nike

我使用这段代码成功插入了记录:

 foreach($R as $k=>$v)
{
$test_id = str_replace('rep_result_', '', $k);
if(strstr($k, 'rep_result_'))
{
$content = $v;
$SQL = "INSERT INTO report SET
rep_te_id = '$test_id',
rep_result = '$content',
record_id = '$R[payment_id]',
rep_date = '$dt'";

但现在我的表中有两个额外的字段,remarknor。所以现在,为了插入所有数据,我编写了以下代码:

foreach($R as $k=>$v)
{
$test_id = str_replace('rep_result_', '', $k);
if(strstr($k, 'rep_result_'))
{
$content = $v;
if(strstr($k, 'remark_'))
{
$remark=$v;
if(strstr($k, 'nor_'))
{
$nor=$v;
$SQL = "INSERT INTO report SET
rep_te_id = '$test_id',
rep_result = '$content',
record_id = '$R[payment_id]',
remark = '**$remark**',
nor = '**$nor**',
rep_date = '$dt'";

我没有在数据库中得到任何东西。这里并非一切都好。如果我只使用一个 if 条件,那么数据将被插入,如 (rep_result,remark,nor any one)

if(strstr($k, 'remark_'))
$remark=$v;

但是当我使用所有这三个条件时,什么都没有存储。我知道我有 if 语句或 foreach 循环问题。

最佳答案

正如其他人所说,您的 SQL 语法根本不正确(混合了 INSERT 和 UPDATE 语法)。单行插入语句的结构如下:

INSERT INTO report (rep_te_id, rep_result, record_id, rep_date )
VALUES ( '$test_id', '$content', '$R[payment_id]', '$dt' )

请仔细阅读准备好的语句、MySQLi 和 PDO,以了解有关数据库服务器性能和高效使用的更多信息。

此外,从一般意义上讲,从循环内向数据库发送大量独立的 SQL 语句可能是一个巨大性能问题。这些调用中的每一个都存在与您希望数据库服务器执行的实际数据插入工作无关的通信和连接开销。

MySQL 允许您使用相同的语句插入多行,因此您可以在循环中构建单个 SQL 语句,然后在一次调用中将所有插入发送到数据库。

用一个语句插入多行的语法如下:

INSERT INTO report (rep_te_id, rep_result, record_id, rep_date )
VALUES ( '1', 'Row 1 content', '1', '2013-04-15' ),
( '2', 'Row 2 content', '2', '2013-04-15' ),
( '3', 'Row 3 content', '3', '2013-04-15' ),
( '4', 'Row 4 content', '4', '2013-04-15' );

有关文档和更多示例,请参阅:

http://dev.mysql.com/doc/refman/5.5/en/insert.html

https://stackoverflow.com/a/6889087/618649

https://stackoverflow.com/a/1307652/618649

关于php - 带有foreach循环的mysql数据插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15987130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com