doushan5245 2017-01-28 23:47
浏览 31
已采纳

SQL Join语句使用PHP循环更新整个列

I need to update an entire column with new unique phone numbers that live in a second table. I seem to be on the right track... but my loop logic is faulty.

I'm returning the matches correctly as far as I can tell, but when I try to update the entire column in the table it inserts the last phone number in every single row.

$query = "SELECT matched.duns, matched.new_p1, users_data.temp_duns
          FROM matched 
          INNER JOIN users_data ON temp_duns
          WHERE temp_duns = duns LIMIT 10";
$result = mysqli_query($connection, $query);

foreach ($result as $key => $val) { 
        if($val['duns'] === $val['temp_duns']) {
            $final_query = "UPDATE users_data SET phone_number = " . $val['new_p1'];
            $final_result = mysqli_query($connection, $final_query);        
            echo $counter . "DUNS From matched: " . $val['duns'] . " DUNS From users_data: " . $val['temp_duns'] .  " NEW PHONE: ".  $val['new_p1']. "<br>";
        }       
    }

I'm a total newb but any help would be appreciated.

  • 写回答

2条回答 默认 最新

  • douwen0612 2017-01-29 01:57
    关注

    Simply run an update query in one call without looping and in MySQL INNER JOIN can be used:

    UPDATE user_data u
    INNER JOIN matched m ON u.temp_duns = m.temp_duns
    SET u.phone_number = m.new_p1;
    

    Or for the limit of 10:

    UPDATE user_data u
    INNER JOIN (SELECT * FROM matched LIMIT 10) m ON u.temp_duns = m.temp_duns
    SET u.phone_number = m.new_p1;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解