中這是一個愚蠢的簡單的事情,但我沒有谷歌退出的答案:MySQL準備聲明 - ? WHERE子句
PREPARE stmt1 FROM 'SELECT productCode, productName
FROM products
WHERE productCode = ?';
是什麼?最後? '?'不是SQL中的通配符,所以它是什麼...
- 編輯:謝謝!
中這是一個愚蠢的簡單的事情,但我沒有谷歌退出的答案:MySQL準備聲明 - ? WHERE子句
PREPARE stmt1 FROM 'SELECT productCode, productName
FROM products
WHERE productCode = ?';
是什麼?最後? '?'不是SQL中的通配符,所以它是什麼...
- 編輯:謝謝!
?
被稱爲參數佔位符。
聲明可能是不完整的,因爲是 未知的準備時間數據值由問號 字符作爲參數標記表示。在執行語句 時,您提供了特定的數據值,每個參數 在語句中都有一個值。
您是否使用ORM如主義? ORM通常使用佔位符(?)代替值,並且僅在執行前應用它們。
?
用作預先未知的值的佔位符。
假設你有兩個?
在你的聲明,那麼你可以定義哪些參數是什麼值將是代替它們使用的?
指標賦予它們的值(如同我們在Java)
我我使用Java的例子來讓你明白的PreparedStatement:
讓說我的查詢是:
PreparedStatement ps = connection.prepareStatement(
`select * from employee where ename = ? and location = ?`);
所以我定義的佔位符反對進行檢查的值和location
,同時執行查詢。
現在我設定的值,而不(以Java作爲我們)改變了我的查詢
ps.setString(1,"John");
ps.setString(2,"New York");
所以現在在運行時查詢將是:
select * from employee where ename = 'John' and location = 'New York'
如果我下一次想要改變的價值,那麼我會這樣做:
ps.setString(1,"Williams");
ps.setString(2,"London");
所以,現在我的查詢將是:
select * from employee where ename = 'Williams' and location = 'London'