我对退货声明几乎没有疑问。
a)是否必须在用户定义的函数中定义return语句。?
b)如果我只定义一个没有任何参数的return语句,它仍然有效吗?它会返回空值吗?
c)以下函数是否有效?
function admin_credential($password = 0, $email = 0) {
if( $password != 0) {
$password = sha1($password);
$query = "UPDATE admins SET password = '$password'";
$result = mysql_query($query);
}
if( $email != 0) {
$query = "UPDATE admins SET email = '$email'";
$result = mysql_query($query);
}
return;
}
答案 0 :(得分:3)
a)是否必须在用户定义的函数中定义return语句。?
没有
b)如果我只定义一个没有任何参数的return语句,它仍然有效吗?它会返回空值吗?
是
c)以下函数是否有效?
是的,但$result
会丢失,因为您没有退回。 return
并非真的有必要。
答案 1 :(得分:2)
a)你不需要在PHP的函数末尾返回一个值。这大致相当于C的void
函数。
b)没有价值的return
是有效的,但是对于稍后查看您的代码的其他人来说可能会造成混淆,因此将其作为标准做法是一个坏主意。请考虑返回NULL
,这将产生相同的效果。
c)是的,您的函数使用有效的语法。
答案 2 :(得分:2)
a)是否必须在用户定义的函数中定义return语句。?
没有。有时你编写的函数不会向被调用的函数返回任何内容,比如说一个以漂亮的方式打印多维数组的函数。
b)如果我只定义一个没有任何参数的return语句,它仍然有效吗?它会返回空值吗?
是。省略return
与return
相同,没有任何参数,并且都返回NULL
。
c)以下函数是否有效?
它在语法上是有效的。但是如果返回一个布尔值来标记查询的成功/失败,那将更有意义。这样调用者就可以知道数据库更新是否正常。
修改强>
"UPDATE admins SET password = '$password'"
查询缺少WHERE
子句。因此,它有效地更新了admins
表中所有用户的密码。
答案 3 :(得分:1)
当您查看PHP表以进行用户身份验证时,需要考虑许多事项。您必须仔细考虑如何将数据存储在表中以及如何检索它。这意味着您需要考虑有多少用户可以访问,以及有多少用户类型。如果你有少数用户甚至不到10个,我建议不要打扰数据库用户身份验证。
您提出的问题已经得到了有效解决,但我建议您尽量避免使系统复杂化,并采用许多不必要的功能:保持简单。