我需要帮助找出这句话的意思是:什么是“x =?”意味着在SQL查询的条件?
SELECT id, username, password FROM users WHERE email = ?LIMIT 1
我知道LIMIT 1
手段,而是什么'= ?'
是?
我需要帮助找出这句话的意思是:什么是“x =?”意味着在SQL查询的条件?
SELECT id, username, password FROM users WHERE email = ?LIMIT 1
我知道LIMIT 1
手段,而是什么'= ?'
是?
这是一个prepared statement。
预准备语句或参数化语句用于高效地重复执行相同的语句。
准备好的语句执行由两个阶段组成:准备和执行。在准备阶段,语句模板被发送到数据库服务器。服务器执行语法检查并初始化服务器内部资源供以后使用。
Prepare后面跟着执行。在执行期间,客户端绑定参数值并将它们发送到服务器。服务器从语句模板和绑定值中创建一个语句,以使用先前创建的内部资源执行语句。
准备好的语句可以重复执行。在每次执行时,绑定变量的当前值将被评估并发送到服务器。该语句不再被解析。语句模板不会再次传输到服务器。
每个准备好的语句占用服务器资源。使用后应立即关闭声明。如果没有明确地完成,当语句句柄被PHP释放时,该语句将被关闭。
使用预准备语句并不总是执行语句的最有效方式。准备好的语句只执行一次会导致比未准备好的语句更多的客户端 - 服务器往返。
本示例通过将位置名称和值替换为INSERT查询来执行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
的
$email = // get some email
$stmt = $dbh->prepare("SELECT id, username, password FROM users WHERE email = ? LIMIT 1");
$stmt->bindParam(1, $email);
值将被放置insetead的?
样?
SELECT id, username, password FROM users WHERE email = '[email protected]' LIMIT 1
你可以找到关于它here
更多信息''代表*占位符*在mysqli或PDO准备语句中使用..请参阅http://stackoverflow.com/a/60496/2864740(大概在查询文本中应该有一个空格以及'''':'.. email = ?LIMIT 1'。) – user2864740