use*_*155 1 php mysql sql sql-update sql-insert
我正在尝试为特定用户更新生物列,但我得到了一个新行.通过类似的问题,但无法解决我的情况.
if (isset($_SESSION['logged_in']) && $_SESSION['name_of_user'] == $profile_name) {
$pageOwner = true;
}
if (isset($_POST['submit'])) {
$bio = $_POST['bio'];
if (empty($bio)) {
$error = "Missing Bio";
} else {
if ($member_bio->num_rows == 1) {
if ($query = $db->query("UPDATE user_account SET 'bio'='$bio' WHERE 'id_user'='$id'")) {
$ok_mesg = "Profile has been updated!!!";
} else {
$error = "ERROR on our end";
}
} else {
if ($query = $db->query("INSERT INTO user_account (bio) VALUES('$bio')")) {
$ok_msg = "Profile has been updated";
} else {
$error = "Error on our end";
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
UPDATE如果值已经存在或者INSERT如果它不存在则可以直接使用INSERT...ON DUPLICATE KEY UPDATE
但首先你需要指定一个唯一的列,
ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)
Run Code Online (Sandbox Code Playgroud)
如果列ID_USER已经是主键,则跳过第一个方法.实现后,您现在可以使用以下语法
INSERT INTO user_account (id_user, bio)
VALUES($id, '$bio')
ON DUPLICATE KEY UPDATE bio = '$bio';
Run Code Online (Sandbox Code Playgroud)
作为一个旁注,查询是脆弱的SQL Injection,如果值(小号变量)从外面走了进来.请查看下面的文章,了解如何防止它.通过使用,PreparedStatements您可以摆脱使用值周围的单引号.
| 归档时间: |
|
| 查看次数: |
3573 次 |
| 最近记录: |