PHP MYSQL->;如果变量为';t null或空

PHP MYSQL->;如果变量为';t null或空,php,mysql,Php,Mysql,对不起,我是PHP新手,所以我看起来像个傻瓜 正如标题所述,我采用了以下方法来更新用户数据: function update($userid, $name){ Try{ $stmt=$this->db->prepare("UPDATE users SET name=:name, WHERE userid=:userid

对不起,我是PHP新手,所以我看起来像个傻瓜

正如标题所述,我采用了以下方法来更新用户数据:

function update($userid, $name){
Try{

    $stmt=$this->db->prepare("UPDATE users
                          SET 
                          name=:name,
                          WHERE userid=:userid");
    $stmt->execute(array(':name'=>$name));

   } Catch(PDOException $e){
     echo $e->getMessage();
  }
  }
该代码工作正常,但我想知道是否可能,如果变量来自:

$user->update($userid, $name);
从$name开始,不为null或不为空。如果为null或空,则不应执行MYSQL更新功能。

请尝试此操作

函数更新($userid,$name){
试一试{
如果(!empty($name)和!empty($userid)){
$stmt=$this->db->prepare(“更新用户
设置
name=:name
其中userid=:userid“;
$stmt->execute(数组(':name'=>$name',:userid'=>$userid));
}
}
捕获(PDO$e){
echo$e->getMessage();
}
}
解释
  • 删除尾随逗号。 正如@Fred-ii所述,在SQL查询中,在集合之后有一个尾随逗号(即
    SET name=:name,
    )。
    SQL查询中的逗号用于将多个更新彼此分开,以便
    更新表集col1=“val1”、col2=“val2”
    等等。因为您只更新一列,所以不需要逗号
  • empty
    方法检查变量
    $name
    是否已设置且不为false。看
  • 已删除中的SQL注入漏洞:userid=$userid
  • 为什么我认为在函数中使用if语句更好
  • 函数应该是可重用的,调用函数不需要任何费用
  • 在干净的代码中,您应该避免使用if语句,这意味着,在调用可以在代码的其他部分调用的函数之前,您不应该总是将if语句包围起来。添加另一个参数时会发生什么
  • 我知道这是可以讨论的
    名称
    !=<代码>名称顺便说一句,后面有一个逗号。“代码工作正常”-我对此深表怀疑。我只是翻译成英文,让你们明白写的是什么,我忘了把nome翻译成name。但它运行良好,翻译可能会引起问题。我知道“nome”是什么意思,但code就是code.btw;我注意到编辑,你仍然有一个逗号,这就是为什么你的代码现在被破坏了。“使用这个”-问题是:“为什么”?如“他们为什么要使用您发布的内容”中所述。如果为null或空,则不应执行MYSQL更新功能。“这是他想要存档的。。。你在哪里读到了为什么?我是说他们的代码出了什么问题,为什么会坏。如果我决定删除上面的评论,你的回答就站不住脚了;正如表达式所示;-)你的解释够了吗@Fred ii当然可以,但是在将其传递到函数之前,他们应该测试它是否为空。这注定要失败。