【问题标题】:save pdo execution results into an array?将 pdo 执行结果保存到数组中?
【发布时间】:2014-02-04 23:35:21
【问题描述】:

我正在使用以下内容来更新我的数据库中具有各种值的表(我已将此示例缩短为两个)。给定一组用户 ($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);
        }

?>

【问题讨论】:

    标签: php arrays pdo prepared-statement


    【解决方案1】:

    使用 stmt->execute(); 之后要执行一些 sql,可以使用 stmt->fetchAll();获取所有受您的 sql 语句影响的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多