簡體   English   中英

在foreach循環中更新表

[英]update table in foreach loop

有一個問題。 只是找不到問題。 我有2個表,第一個是kampe:hold1,hold2,hold1goal,hold2goal和另一個hold:hold,fgoal,agol。 我試圖將所有hold1goal和hold2goal轉換為hold表中的fgoal和agoal。 我對sql很新。

<?php
include "config.php";

foreach($db->query('SELECT * FROM kampe') as $row){

        $fgoal = $row['hold1goal'];
        $agoal = $row['hold2goal'];
        $hold = $row['hold1'];

        $stmt = $db->prepare("UPDATE hold SET fgoal = :fgoal, agoal = :agoal WHERE hold = :hold");                                  
        $stmt->bindParam(':fgoal', $fgoal); 
        $stmt->bindParam(':agoal', $agoal); 
        $stmt->bindParam(':hold', $hold);   


        $stmt->execute(); 


        /*   print $agoal . "\n";

        $fgoal = $row['hold2goal'];
        $agoal = $row['hold1goal'];
        $hold = $row['hold2'];

        $stmt = $db->prepare("UPDATE hold SET fgoal = :fgoal, agoal = :agoal WHERE hold = :hold");                                  
        $stmt->bindParam(':fgoal', $fgoal); 
        $stmt->bindParam(':agoal', $agoal); 
        $stmt->bindParam(':hold', $hold);   



        $stmt->execute(); */
}
?>

這就是結果。 只有“ Odensevej”發生了變化。 以為foreach循環會改變一切。

坎佩

INSERT INTO `kampe` (`kampID`, `hold1`, `hold2`, `hold1goal`, `hold2goal`) VALUES
(1, 'marksvej', 'holdet', 0, 0),
(2, 'tervej', 'dfdf', 0, 0),
(3, 'Odensevej', 'holdet2', 2, 1),
(4, 'hest', 'hestener', 0, 0),
(5, 'holdet', 'tervej', 0, 0),
(6, 'dfdf', 'marksvej', 2, 6),
(7, 'Odensevej', 'hest', 0, 0),
(8, 'hestener', 'holdet2', 3, 1),
(9, 'dfdf', 'holdet', 0, 0),
(10, 'tervej', 'marksvej', 0, 0),
(11, 'hestener', 'Odensevej', 2, 1),
(12, 'holdet2', 'hest', 0, 0),
(13, 'Odensevej', 'holdet', 0, 0),
(14, 'dfdf', 'holdet2', 0, 0),
(15, 'hest', 'tervej', 2, 3),
(16, 'hestener', 'marksvej', 0, 0),
(17, 'holdet2', 'holdet', 0, 0),
(18, 'Odensevej', 'marksvej', 0, 0),
(19, 'hest', 'dfdf', 0, 0),
(20, 'tervej', 'hestener', 0, 0),
(21, 'hest', 'holdet', 0, 0),
(22, 'marksvej', 'holdet2', 0, 0),
(23, 'tervej', 'Odensevej', 0, 0),
(24, 'dfdf', 'hestener', 0, 0),
(25, 'holdet', 'hestener', 0, 0),
(26, 'hest', 'marksvej', 0, 0),
(27, 'tervej', 'holdet2', 0, 0),
(28, 'Odensevej', 'dfdf', 3, 2);

保持

INSERT INTO `hold` (`id`, `hold`, `leder`, `telefon`, `email`, `fgoal`, `agoal`, `p`) VALUES
(6, 'holdet', 'kim anov', '345345', 'kimanov@gmail.com', 0, 0, 0),
(20, 'marksvej', 'svend dellepude', '345345', 'kimanov@gmail.com', 0, 0, 1),
(61, 'tervej', 'Kim Test', '34343434', 'kim@anov.dk', 0, 0, 1),
(64, 'dfdf', 'dfdf', 'dfdf', 'kim@anov.dk', 0, 0, 0),
(67, 'Odensevej', 'Brian Anov', '34343434', 'brian@anov.dk', 3, 2, 2),
(69, 'holdet2', 'asda asdasd', '4234234', 'dsfsf@sdfsd.com', 0, 0, 0),
(70, 'hest', 'kim a', '323423', 'adas@asda.dk', 0, 0, 0),
(71, 'hestener', 'asdasd asdasd', '3423423423', 'safsdfasdasd.com', 0, 0, 2);

這並不能直接回答您有關查詢結果循環為什么失敗的問題,但是...沒有理由為什么要在PHP中循環執行此操作。 一個查詢將同時執行SELECT和UPDATE:

update hold h
left join kampe k on
    k.hold1 = h.hold
set
    fgoal = k.hold1goal,
    agoal = k.hold2goal

向組合中添加PHP循環會大大增加數據庫中相對簡單的UPDATE查詢的開銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM