Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在SQL语句中可以在哪里使用参数?_Php_Sql_Sql Server - Fatal编程技术网

Php 在SQL语句中可以在哪里使用参数?

Php 在SQL语句中可以在哪里使用参数?,php,sql,sql-server,Php,Sql,Sql Server,我正在构建一个搜索引擎,我一直在尝试用PHP构建参数化SQL语句。我想知道在哪里可以使用参数的规则是什么 e、 g.这项工作: $var = $unsafevar; $stmt = mysqli_prepare($connection, "SELECT * FROM users WHERE username = ?"); mysqli_stmt_bind_param($stmt, 's', $var); mysqli_stmt_execute($stmt); $result = mysqli_s

我正在构建一个搜索引擎,我一直在尝试用PHP构建参数化SQL语句。我想知道在哪里可以使用参数的规则是什么

e、 g.这项工作:

$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子句本身进行参数化?

数据库、架构、表和列名不能参数化-如果希望“参数化”它们,则需要求助于


这篇链接文章对动态SQL的使用进行了广泛的讨论,主要讨论SQL Server,尽管它适用于大多数SQL数据库。

数据库、架构、表和列名不能参数化-如果希望“参数化”它们,您需要求助于


链接文章对动态SQL的使用进行了广泛的讨论,主要涉及SQL Server,尽管它适用于大多数SQL数据库。

我的参数助记符如下:

任何可以使用单个标量值的地方,都可以使用参数。

即,带引号的字符串文字、带引号的日期文字或数字文字


任何其他内容(标识符、SQL关键字、表达式、子查询、()中
谓词的值列表等)都不能参数化。

我的参数助记符如下:

任何可以使用单个标量值的地方,都可以使用参数。

即,带引号的字符串文字、带引号的日期文字或数字文字

其他任何内容(标识符、SQL关键字、表达式、子查询、()中
谓词的值列表等)都不能参数化