【问题标题】:update few row table from array value从数组值更新几行表
【发布时间】:2020-10-25 17:09:42
【问题描述】:

我向PHP MYSQL updating multiple rows using values from an array学习

        $array = Array();
           $query = $conn->query("
           SELECT P.email,P.kodeunik FROM peserta P
           LEFT JOIN konfirmasi K ON K.nominal=P.kodeunik
           LEFT JOIN detailbca D ON D.mutasi =P.kodeunik       
           where P.paid='0' AND K.paid='0' AND D.paid='0'");
           while($result = $query->fetch_assoc()){
           $array[] = $result;
           }
    
    $email = implode(',', array_column($array, 'email'));
    $nominal1 = implode(',', array_column($array, 'kodeunik'));

echo $nominal1; // 215003,215004,215005

如果 $nominal1 有多个数字,现在我想更新表,在这种情况下,将更新 3 行表

$array1=$nominal1;
  $sql1 = "UPDATE detailbca SET paid='1'  
WHERE mutasi IN (' . implode(',', array_map('intval', $array1)) .";
  $sql1 = $conn->query($sql);

这个查询不起作用,怎么了?

【问题讨论】:

  • 您的更新查询有语法错误。启用错误报告并检查查询中的错误。

标签: php mysql multidimensional-array


【解决方案1】:

无需再次使用implode()

您可以在$arraykodeunik 列上使用array_column(),然后使用array_map() 使用intval,最后使用implode() 使用,

$email = "'" . implode("','", array_column($array, 'email')) . "'";
$nominal1 = implode(',', array_map('intval',array_column($array, 'kodeunik')));
$sql1 = "UPDATE detailbca SET paid='1' WHERE mutasi IN ($nominal1)";
$sql1 = $conn->query($sql);

【讨论】:

  • @AgustoNice 很高兴它能以某种方式帮助你兄弟。祝你好运:)
  • 抱歉再次询问,intval 仅用于数字?? $email = implode(',', array_map('intval',array_column($array, 'email')));错还是错?
  • @AgustoNice 是的,这是错误的,因为您不需要像 $nominal 那样将电子邮件值转换为整数
  • 没有不正确的电子邮件,不需要投射它,只需用一些额外的引号包裹 implode
  • 再次检查我的答案,我已经编辑它也用于电子邮件
猜你喜欢
  • 1970-01-01
  • 2021-03-26
  • 2022-09-27
  • 2012-08-29
  • 1970-01-01
  • 2019-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多