什么是“;x=";SQL查询条件下的平均值


What does "x = ?" mean in condition of an SQL query?

我需要帮助弄清楚这句话的意思:

SELECT id, username, password FROM users WHERE email = ?LIMIT 1

我知道LIMIT 1是什么意思,但'= ?'是干什么的?

这是一个准备好的语句。

准备好的语句或参数化的语句用于高效地重复执行同一语句。

prepared语句执行由两个阶段组成:prepared和execute。在准备阶段,一个语句模板被发送到数据库服务器。服务器执行语法检查并初始化服务器内部资源以供以后使用。

准备后执行。在执行过程中,客户端绑定参数值并将其发送到服务器。服务器根据语句模板和绑定值创建一个语句,以使用以前创建的内部资源执行该语句。

准备好的语句可以重复执行。每次执行时,都会评估绑定变量的当前值并将其发送到服务器。不会再次分析该语句。语句模板不会再次传输到服务器。

每个准备好的语句都占用服务器资源。语句应在使用后立即显式关闭。如果没有显式执行,那么当PHP释放语句句柄时,该语句将被关闭。

使用准备好的语句并不总是执行语句的最有效方式。只执行一次的已准备语句比未准备语句导致更多的客户端-服务器往返。

此示例通过用名称和值替换位置?来执行INSERT查询?占位符。

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);
// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

我建议阅读整个教程。您还应该查看PDO。

您的查询:

SELECT id, username, password FROM users WHERE email = ? LIMIT 1

?符号表示占位符。

我想,你用的是pdo。何时执行查询

$email = // get some email
$stmt = $dbh->prepare("SELECT id, username, password FROM users WHERE email = ? LIMIT 1");
$stmt->bindParam(1, $email);

变量$email的值将被放置在?之外,如:

SELECT id, username, password FROM users WHERE email = 'bob@gmail.com' LIMIT 1

你可以在这里找到更多关于它的信息