Php 如果值不存在,则更新记录;如果存在,则取消
下面是我的代码,不起作用Php 如果值不存在,则更新记录;如果存在,则取消,php,mysql,laravel,Php,Mysql,Laravel,下面是我的代码,不起作用 $edituser = DB::table('users') ->select('name','username') ->where('name', $username) ->first(); if(is_null($edituser)) { $set = DB::table('use
$edituser = DB::table('users')
->select('name','username')
->where('name', $username)
->first();
if(is_null($edituser)) {
$set = DB::table('users')->update(array('username' => $request->setnewusername));
} else {
return redirect()->back()->with('error', 'Username sudah tersedia');
}
return redirect()->back()->with('success', 'Username berhasil diubah');
您正在尝试更新不存在的行。您可能想插入它。您使用Laravel,因此我假设您有一个用户模型:
$edituser = DB::table('users')
->select('name','username')
->where('name', $username)
->first();
if(is_null($edituser)) {
//create a new user object, add the new name and save it to the database
$user = new User();
$user->name = $request->setnewusername;
$user->save();
} else {
return redirect()->back()->with('error', 'Username sudah tersedia');
}
return redirect()->back()->with('success', 'Username berhasil diubah');
编辑:
根据您的评论,您可以使用以下内容,它会检查是否有具有newUsername john的用户,如果没有,它会将user mark的用户名更新为john。请注意,它不会检查是否有名为Mark的用户:
$oldUsername = "mark";
$newUsername = "john";
if(is_null(DB::table('users')->select('name','username')->where('name', $newUsername)->first())) {
$set = DB::table('users')->where('name', $oldUsername)->update(array('username' => $newUsername));
} else {
return redirect()->back()->with('error', 'Username sudah tersedia');
}
return redirect()->back()->with('success', 'Username berhasil diubah');
“不起作用”不是解释你实际问题的恰当方式。请阅读,然后相应地编辑您的问题。您正在检查记录,如果它不存在,您是否正在尝试更新它?您无法更新不存在的内容。你不是说插入?你如何更新不存在的东西?我想更新一个用户名,例如“Mark”,我用“John”更新,如果用户名“John”不属于其他用户,则用“John”更新标记用户名,正如人们在上面的评论中所说的,最好更好地描述出哪里出了问题以及你的期望。我的代码不起作用,内容非常广泛,无法描述问题所在。因此,我建议下次多花点时间“编写”您的问题:。谢谢,但我在这里使用查询生成器Not EloquentOk根据您的评论进行了编辑