我在更新字段数据时遇到问题。例如,我有数据字段" runner"我希望将字段更新为" runner,swimmer"。换句话说,我希望我的字段永远不会删除previuos数据。但是现在更新后我来自" runner"去游泳者"仅
我的代码现在:
function updateUserField($username, $field, $value) {
$q = "UPDATE " . TBL_USERS . " SET " . $field . " = '$value' WHERE username = '$username'";
return mysql_query($q, $this->connection);
}
感谢您的帮助!抱歉英语不好。
答案 0 :(得分:2)
你有错误的想法。在关系数据库中存储列表的正确方法是使用联结表。每个用户和每个"字段"这将有一行。在您的情况下,该表格至少包含三列UserId
,Field
,Value
。
然后,"更新"看起来像是:
insert into UserFields (UserId, Field, Value)
values ($UserId, @Field, $Value);
(当然,您应该使用mysqli_和参数化查询,但这是另一回事。)
当SQL提供一种非常好的存储列表的方法时,不要养成将列表存储为字符串的习惯。
答案 1 :(得分:0)
您需要在MySQL中使用CONCAT()函数进行字符串连接:
if(isset($_POST['currentPassword']))
{
$currentPassword = $_POST['currentPassword'];
$newPassword = $_POST['newPassword'];
$ConfirmPassword = $_POST['ConfirmPassword'];
//$saltcode = IrBuscarSalt($_SESSION['user']['username']);
$oldpass = IrBuscarPassword($_SESSION['user']['username']);
$hash = password_hash($oldpass, PASSWORD_BCRYPT, ['cost' => 13]);
if (password_verify($oldpass, $hash)) {
// password valid
//echo $oldpass;
$change = true;
} else { echo "bad"; }
}