我需要幫助找出這句話的意思是:什麼是「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