0

複数の foreach ステートメントを配列に移動するベスト プラクティスは何ですか? これを行うためのより適切で高速な方法があることがわかっている場合、コードでプロセスを繰り返しています。可能issetですforeachか?で作業を始めていPDOますが、以下のコードを短縮したり、何らかのタイプの配列に移動したりするにはどうすればよいですか?

if (isset($_POST['one'], $_POST['two'], $_POST['three'])) {

    foreach($_POST['one'] as $id => $one) {
        $sql = "UPDATE table SET one = ? WHERE id = ?";
        $q = $db->prepare($sql);
        $q->execute(array($one, $id)); 
    } 

    foreach($_POST['two'] as $id => $two) {
        $sql = "UPDATE table SET two = ? WHERE id = ?";
        $q = $db->prepare($sql);
        $q->execute(array($two, $id)); 
    }  

    foreach($_POST['three'] as $id => $three) {
        $sql = "UPDATE table SET three = ? WHERE id = ?";
        $q = $db->prepare($sql);
        $q->execute(array($three, $id)); 
    } 
} 

編集: より明確な例の HTML/PHP (input type='text') の例:

$stmt = $db->query('SELECT * FROM table ORDER BY id ');
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo " 
<input type='text' id='one' value='{$row['one']}' name = 'one[{$row['id']}]' />
<input type='text' id='two' value='{$row['two']}' name = 'two[{$row['id']}]' />
<input type='text' id='three' value='{$row['three']}' name = 'three[{$row['id']}]' />";
} 
4

2 に答える 2

0

これを行う別の方法:

<?PHP
foreach($_POST as $name => $value) {
    if(isset($name,$value)){
        $sql = "UPDATE table SET $name = $value WHERE id = $name";
        $q->execute($db->prepare($sql)); 
    }
}
?>

他の情報も投稿している場合は、これを配列に移動できます。それから持っている

foreach($_POST[fieldsToUpdate] as $name => $value) {

他にご不明な点がございましたら、お問い合わせください。

于 2013-10-02T20:33:40.223 に答える