在isset函数

时间:2015-07-28 17:46:20

标签: php isset

我试图通过尝试在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的错误,我不知道如何解决它或者它是否可能。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

有时可能会有点混乱,但是:

$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;

Connot在表达式的结果上使用isset() 当你在if语句中使用单个相等时,$ variable被赋予相等右边的值,然后在empty()中计算变量。优先权决定了它是在达到三元运算之前定义的。

答案 1 :(得分:1)

您可以使用:

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

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