提问人:morbo 提问时间:11/16/2023 更新时间:11/16/2023 访问量:25
如何在选择之前添加更新
how to add update before select
问:
如何更新之前已经登录过的用户的数据(他们的user_id被记录下来),然后再从本行完整列表中的数据库中获取这些用户$user = $this->pdo->prepare("SELECT * FROM bot_shop_profile WHERE user_id = :user_id"); $user->execute(['user_id' => $chat_id]);
{
$user = $this->pdo->prepare("SELECT * FROM bot_shop_profile WHERE user_id = :user_id");
$user->execute(['user_id' => $chat_id]);
if ($user->rowCount() == 0) {
$newUser = $this->pdo->prepare("INSERT INTO bot_shop_profile SET user_id = :user_id, first_name = :first_name, last_name = :last_name, phone = :phone, adress = :adress, action = 'start', username = :username");
$newUser->execute([
'user_id' => $chat_id,
'first_name' => $data['message']['chat']['first_name'],
'last_name' => $data['message']['chat']['last_name'],
'username' => $data['message']['chat']['username'],
'phone' => '',
'adress' => '',
]);
} else {
@$this->setActionUser("start", $chat_id);
}
}```
I think it should be an expression with UPDATE
答:
1赞
Arman Saleem
11/16/2023
#1
可以使用 UPDATE 语句修改数据库中的现有记录。在这种情况下,如果具有指定user_id的用户已存在,则要更新用户的信息。下面介绍如何修改代码以实现此目的:
$user = $this->pdo->prepare("SELECT * FROM bot_shop_profile WHERE user_id = :user_id");
$user->execute(['user_id' => $chat_id]);
if ($user->rowCount() == 0) {
// User doesn't exist, insert a new record
$newUser = $this->pdo->prepare("INSERT INTO bot_shop_profile SET user_id = :user_id, first_name = :first_name, last_name = :last_name, phone = :phone, address = :address, action = 'start', username = :username");
$newUser->execute([
'user_id' => $chat_id,
'first_name' => $data['message']['chat']['first_name'],
'last_name' => $data['message']['chat']['last_name'],
'username' => $data['message']['chat']['username'],
'phone' => '',
'address' => '',
]);
} else {
// User exists, update the existing record
$updateUser = $this->pdo->prepare("UPDATE bot_shop_profile SET first_name = :first_name, last_name = :last_name, username = :username WHERE user_id = :user_id");
$updateUser->execute([
'user_id' => $chat_id,
'first_name' => $data['message']['chat']['first_name'],
'last_name' => $data['message']['chat']['last_name'],
'username' => $data['message']['chat']['username'],
]);
$this->setActionUser("start", $chat_id);
}
此代码首先检查具有给定user_id的用户是否存在。如果没有,它将插入一条新记录。如果用户已存在,则会使用新信息更新现有记录。根据您的数据库架构调整 UPDATE 语句中的列名和值。
评论
0赞
morbo
11/16/2023
这正是我所需要的,非常感谢
评论
user_id
bot_shop_profile
INSERT ... ON DUPLICATE KEY UPDATE ...
SELECT