我正在使用以下内容更新我的数据库中的表以及各种值(我已将此示例缩短为两个)。给定一组用户($ 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);
}
?>
答案 0 :(得分:0)
使用stmt-&gt; execute();要执行一些sql,你可以使用stmt-&gt; fetchAll();获取受sql语句影响的所有行。