将PDO执行结果保存到数组中



我正在使用以下内容来更新DB中的表格(我已将此示例缩短到两个示例)。给定一个用户数组($ user_set),我检查以查看用户的设置是否存在...如果他们这样做,我更新了用户行...如果他们不这样做,则我为用户创建一行。

下面的代码正常工作,但是,我需要返回刚刚更改的行的数组,以便可以使用JS更新页面。

本质上,我想做的是$result_array[] = $stmt->execute($binding);(行更新/插入的所有值)

这样,我可以echo json_encode($result_array);并具有刚刚更新/插入JS的所有行的数组。

是可能的事情,还是我需要在PHP中自己创建数组才能返回?

<?php
        //set bindings
        $binding = array(
            'one' => $settings['one'],
            'two' => $settings['two'],
            'user_id' => $user['user_id']
            );
        foreach($user_set as $key)
        {
            // check if program settings exist or not
            $stmt = $db->prepare("SELECT * FROM settings WHERE user_id = ?");
            $stmt->execute(array($key['user_id']));
            // program_settings result is
            $result = $stmt->fetch(PDO::FETCH_ASSOC);
            // if result then settings exist and update... if not insert one
            if($result)
            {
                //prepare update statement
                $stmt = $db->prepare("UPDATE settings SET one = :one, two = :two WHERE user_id = :user_id");
            }
            else
            {
                //prepare insert statement
                $stmt = $db->prepare("INSERT INTO settings (user_id, one, two) VALUES (:user_id, :one, :two)");
            }
            //set comp id
            $binding['user_id'] = $key['user_id'];
            // execute the update
            $stmt->execute($binding);
        }
?>

使用stmt-> execute();要执行一些SQL,您可以使用STMT-> fetchall();要拿所有受SQL语句影响的行。