【问题标题】:PHP Save bind_result field in Comma Separated Value then Insert in Another TablePHP将bind_result字段保存在逗号分隔值中,然后插入另一个表
【发布时间】:2020-03-30 06:03:22
【问题描述】:

我是新手。我试图从users 表中以逗号分隔值(如1001,1002,1003 etc)获取所有users_id,然后将它们作为逗号分隔值直接插入tmpOrdersq_id 列中。到目前为止,我已经编写了下面的代码,但它没有插入逗号分隔值。如果我采用 foreach 循环,那么它会为每个 user_id 插入一个单独的行,但我需要在 sq_id 列中插入一个包含所有逗号分隔 ID 的单行

 $sql="SELECT users.id as user_id,age FROM users";

 $stmt = $con->prepare($sql);                 
 $stmt->execute();
 $stmt->bind_result($data[0], $data[1]);

 while ($stmt->fetch()) {
   echo $data[0];
 }

 $stmt1 = $con->prepare("INSERT INTO tmpOrder(id,sq_id) 
 VALUES ($id,implode(',',$data[0]");

 $stmt1->execute();

【问题讨论】:

  • 您没有在任何地方定义 $data,您如何在 $data 变量中获取数据

标签: php mysql


【解决方案1】:

我会使用单个查询,使用GROUP_CONCAT 生成一个逗号分隔的列表,从usersINSERT 使用INSERT ... SELECT 查询直接进入tmpOrder

$sql = "INSERT INTO tmpOrder(id, sq_id)
        SELECT ?, GROUP_CONCAT(id) 
        FROM users";
$stmt = $con->prepare($sql);
$stmt->bind_param('i', $id);
$stmt->execute();

【讨论】:

    【解决方案2】:

    希望对您有所帮助...

    INSERT 
    INTO tmpOrder(id,sq_id) 
    VALUES ( 
      $id,
      ( 
        SELECT
          GROUP_CONCAT(users.id SEPARATOR ',') 
        FROM
          users
      )
    ) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 2016-10-13
      相关资源
      最近更新 更多