【问题标题】:Q: Insert data into loop statementQ:在循环语句中插入数据
【发布时间】:2019-04-14 07:48:57
【问题描述】:

早上好,

我不想用可能是最简单的问题/解决方案来打扰大家,但似乎无论我读过哪些有关堆栈溢出的当前文章,甚至我自己尝试解决的问题,我都可以'似乎没有我正在寻找的回应。

我这一周一直在努力的工作是能够从发票列表中获取用户 ID (uid),然后将相同的 ID 插入到名为 convo_sent 的新表中,问题是以下代码(如下所示)当从 invoice_id 中提取多个字符串时,不会多次插入内容:

SQL 表:

**invoices** table.

Id | uid  | invoice_id
1  |  2   | 1     
2  |  20  | 3
3  |  4   | 10
4  |  60  | 1    


**convo_sent** table.

Id | uid  | sid  | action       | action_id | date | seen
1  |  1   | 90   |  sent        |     1     |  n/a | 1
2  |  10  | 85   |  sent        |     1     |  n/a | 0
3  |  7   | 270  |  no_payment  |     0     |  n/a | 0
4  |  6   | 400  |  sent        |     1     |  n/a | 1

有问题的脚本:

 $sql="select uid from invoices where invoice_id = '1'";
 $res=mysql_query($sql);
 while($data_set=mysql_fetch_array($res))
 {
                $date=date("l, F j, Y h:i a", TIME());
                                    $sid=$_SESSION["mid"];
                                    $fid=$data_set["uid"];

                $sql="insert into convo_sent";
                $sql.="(uid";
                $sql.=", sid";
                $sql.=", action";
                $sql.=", action_id";
                $sql.=", seen";
                $sql.=", time)";

                $sql.=" values('$fid' ";
                $sql.=", '$sid'";
                $sql.=", 'test'";
                $sql.=", '0'";
                $sql.=", '0'";
                $sql.=", '$date')";
                $res = mysql_query($sql);
   $sr_no=$sr_no+1;
 }

我相信会发生的是,虽然语句(本身,没有插入方法)能够循环并提取我需要的信息。当您尝试使用 insert 方法时,可能语句(循环)只能提交第一个用户 ID,而不能提交其他任何内容。

【问题讨论】:

  • member_id 表中的member_id 列在哪里?
  • @Samir - 更正了代码,抱歉。 $data_set["uid"] 替换 $data_set["member_id"] 并且 $_SESSION["member_id"] 替换为 $_SESSION["mid"];为了便于理解,代码本身已与原始代码进行了一些更改。
  • 回显$sql 并检查它在while 内循环了多少次。
  • @Samir - 好问题,会试试看。
  • @Samir - 只循环一次,它总是最后一个整数。

标签: php sql insert


【解决方案1】:

我认为您覆盖了 select 语句($res 变量)。将 $res 变量替换到循环中。

$sql="select uid from invoices where invoice_id = '1'";
$res=mysql_query($sql);
while($data_set=mysql_fetch_array($res))
{
    // ...
    $sql="insert into convo_sent";
    // ...
    $status = mysql_query($sql);
    $sr_no=$sr_no+1;
}

【讨论】:

  • @EqualPro - 就像这样,你设法解决了我的问题。谢谢你!
  • @EqualPro - 嘿,我想你可能会遇到一些问题。总而言之,我一直在尝试使用 mail() 函数向我们的客户发送有关发票的消息,并且使用 Outlook 帐户的人似乎从同一正文模板中收到重复的消息。我不确定如何继续解决这个问题。
猜你喜欢
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 2014-02-28
相关资源
最近更新 更多