这个问题涉及嵌套mysqli函数。我不确定“嵌套”一词是否正确,所以我会解释 例如,查看此代码:
$query = 'SELECT id FROM users WHERE id="' . $_POST['uid'] . '"';
$result = $mysqli->query($query);
$user_id = mysqli_fetch_row($result);
上面的代码可以转换为简写版本,如下所示:
$user_id = mysqli_fetch_row($mysqli->query('SELECT id FROM users WHERE id="' . $_POST['uid'] . '"'));
我知道这是有效的,因为我已经尝试过了。我看到PHP正在处理来自“由内而外”的代码,它基本上是一种编写此代码的递归方法,还是完全不符合这些条款?
我的问题是,这适用于所有MYSQL命令或PHP函数吗?这个功能有例外吗?使用这种形式有什么缺点? (除了程序员不那么可读)
编辑:我知道查询不是准备好的声明。
答案 0 :(得分:3)
为了调用函数或类方法,PHP必须评估它提供的所有参数。
在这种情况下,给出声明:
$user_id = mysqli_fetch_row($mysqli->query("SELECT id FROM users WHERE id = $_POST[uid]"));
mysqli_fetch_row
,PHP将首先评估其参数,即$mysqli->query("SELECT id FROM users WHERE id = $_POST[uid]")
$mysqli->query
,PHP将首先评估其参数,即"SELECT id FROM users WHERE id = $_POST[uid]"
$mysqli->query
并返回结果集(或者可能是错误)mysqli_fetch_row
我想说这不是特定于PHP的,而是参数评估中非常普遍的行为。
然而,它有一个主要缺点:你放弃任何类型的错误检查,尤其是在处理数据库时,这是非常重要的。