在 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 语句中使用单个等于时,$variable 被分配等于右边的值,然后在 empty()
中评估变量,在这种情况下。并且优先级决定了它是在达到三元运算之前定义的。
你可以使用这个:
$setpass_accinfo_row = $dbconn->query("SELECT ...")->fetch_assoc() ?: false;
$dbconn->query()
returns mysqli 结果
$dbconn->query()->fetch_assoc()
returns:
- 与获取的行对应的关联数组
NULL
如果没有找到行
?:
是三元运算符的缩写形式,在本例中,returns 数组或 false
请注意,它不会检查查询是否执行成功。
我试图通过尝试在 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 语句中使用单个等于时,$variable 被分配等于右边的值,然后在 empty()
中评估变量,在这种情况下。并且优先级决定了它是在达到三元运算之前定义的。
你可以使用这个:
$setpass_accinfo_row = $dbconn->query("SELECT ...")->fetch_assoc() ?: false;
$dbconn->query()
returns mysqli 结果$dbconn->query()->fetch_assoc()
returns:- 与获取的行对应的关联数组
NULL
如果没有找到行
?:
是三元运算符的缩写形式,在本例中,returns 数组或false
请注意,它不会检查查询是否执行成功。