我正在构建一个搜索引擎,并且一直在尝试在 PHP 中构建参数化 SQL 语句。我想知道在哪里可以使用参数的规则是什么。
例如这有效:
$var = $unsafevar;
$stmt = mysqli_prepare($connection, "SELECT * FROM users WHERE username = ?");
mysqli_stmt_bind_param($stmt, 's', $var);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);
这不会:
$var = 'SELECT';
$var2 = 11;
$stmt = mysqli_prepare($connection, "? * FROM users WHERE username = ?");
mysqli_stmt_bind_param($stmt, 'ss', $var, $var2);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);
参数在哪里可以用,哪里不能用?
或者,更简单地说,参数化对变量有什么作用?它是否在它们周围加上单引号?如果是这种情况,有没有办法将通配符、列名或 SQL 子句本身参数化?