因此,我正在考虑制作一个用于更新用户详细信息的表单。
if(strlen($pwd) >3){
echo "password too short";
}else{
$password=sha1($pwd);
$sqlUpdate="update user set first_name='$firstname',
last_name='$lastname',
email='$email',
username='$username',
password=SHA1('$pwd')
where user_id='$id'";
if ($upresult = mysqli_query($dbc, $sqlUpdate)){
}
}
}
else{
$sql="select * from user where user_id=" . $id ;
$result = mysqli_query($dbc, $sql);
while ($newarray=mysqli_fetch_array($result)){
$firstname=$newarray['first_name'];
$lastname=$newarray['last_name'];
$email=$newarray['email'];
$username=$newarray['username'];
$password=$newarray['password'];
}
}
这是我目前得到的代码,它运行得很好。但是,我对始终输入密码的要求感到恼火。经过一番谷歌搜索后,最流行的建议解决方案似乎是运行更新查询,其中密码未更新。
if (){
$sqlUpdate="update user set first_name='$firstname',
last_name='$lastname',
email='$email',
username='$username'
where user_id='$id'";
}else{
if(strlen($pwd) >3){
echo "password too short";
}else{
$password=sha1($pwd);
$sqlUpdate="update user set first_name='$firstname',
last_name='$lastname',
email='$email',
username='$username',
password=SHA1('$pwd')
where user_id='$id'";
if ($upresult = mysqli_query($dbc, $sqlUpdate)){
}
}
}
}
else{
$sql="select * from user where user_id=" . $id ;
$result = mysqli_query($dbc, $sql);
while ($newarray=mysqli_fetch_array($result)){
$firstname=$newarray['first_name'];
$lastname=$newarray['last_name'];
$email=$newarray['email'];
$username=$newarray['username'];
$password=$newarray['password'];
}
}
您会注意到第二个代码块中的第一个 if 语句是空的。这是因为无论我在密码留空的情况下在其中输入什么来进行更新,都没有任何效果。如果我输入密码,它将正常运行该更新。
if ($pwd == ''){
if ($pwd === ''){
if (empty($pwd)){
if (empty($pwd)==TRUE){
这些是我通过浏览 Google 看到的建议...我真的很困惑。我错过了什么?
...啊,我可以编辑这个。好的。
if(isset($_POST['update'])){
...
$pwd=$_POST['password'];
这就是我获得 $pwd 的方式。
流感和租赁检查很烦人。插入 var_dump($_POST['password']); 后根据要求,其输出为:
string 'jojo13' (length=6)
string '' (length=0)
根据我尝试插入的密码,结果会发生变化。但是,它似乎清楚地知道我将密码留空,并返回字符串“”。
这可能是错误的方法,但出于好奇,我尝试运行
if (strlen($_POST['password']) == 0)
它仍然没有更新数据库。但。在我遇到这样的情况之前,不输入密码会导致出现“密码太短”消息。上面的 if 语句不会再出现“密码太短”消息。
最佳答案
尝试
$has_password = isset($pwd) && !empty($pwd);
if($has_password){...}`
它比 empty()
更强大。
关于php - 如果字段留空,则无法执行 PHP SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24229498/