繁体   English   中英

在 isset 函数中定义变量

[英]Defining a variable inside isset function

我试图通过尝试在isset()定义一个变量来保存行。 目前,我可以完成这项工作的唯一方法是:

$setpass_accinfo = $dbconn->query("SELECT id,name,password FROM users WHERE id=" . $dbconn->real_escape_string(_GET('id')));
$setpass_accinfo_row = isset($setpass_accinfo->num_rows) ? $setpass_accinfo->fetch_assoc() : false;

所以,如果你明白我的意思,我正在尝试将这两行合二为一。 例如这样的事情:

$setpass_accinfo = isset(($setpass_accinfo = $dbconn->query("SELECT id,name,password FROM users WHERE id=" . $dbconn->real_escape_string(_GET('id'))))->num_rows) ? $setpass_accinfo->fetch_assoc() : false;

问题是它给了我一个关于使用$setpass_accinfo的错误,我不知道如何修复它,或者它是否可能。 有什么想法吗?

这有时会变得有点混乱,但是:

$setpass_accinfo_row = !empty($setpass_accinfo = $dbconn->query("SELECT id,name,password FROM users WHERE id=" . $dbconn->real_escape_string(_GET('id')))) ? $setpass_accinfo->fetch_assoc() : false;

不要对表达式的结果使用 isset()
当您在 if 语句中使用单个 equal 时, $variable 被分配等号右侧的值,然后在empty()评估该变量,在这种情况下。 并且优先级决定了它是在达到三元运算之前定义的。

你可以使用这个:

$setpass_accinfo_row = $dbconn->query("SELECT ...")->fetch_assoc() ?: false;
  • $dbconn->query()返回 mysqli 结果
  • $dbconn->query()->fetch_assoc()返回:
    • 与获取的行对应的关联数组
    • 如果未找到行,则为NULL
  • ?:是三元运算符的较短形式,在这种情况下,它返回数组或false

请注意,它不会检查查询是否成功执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM