我有一個通用結構的表。
在名爲myvalue
的列中,我存儲可以是整數,字符串或日期的信息。
爲了使其具有通用性,列myvalue
是VARCHAR
。這意味着,當我保存一個整數時,它仍然存儲爲一個字符串。PHP的PDO SELECT語句:比較VARCHAR爲INT
現在,我在表上執行SELECT
。例如。
SELECT * FROM mytable WHERE myvalue > 10 AND username = 'foo'
假設我們有2行用戶foo
:5
和20
。
直接執行此查詢,會給我正確的結果(返回20
)。
現在,我通過PDO執行查詢:
$sql = "SELECT * FROM mytable WHERE myvalue > ? AND username = ?";
$params = array(10, 'foo');
$adapter->fetchAll($sql, $params);
彷彿PDO比較字符串的結果返回[5, 20]
。
我該如何告訴PDO做一個數字比較?
這應該只是罰款。當您將10直接放在問號上時會發生什麼? – Daan
它可以直接放置(見第一個例子) – Horen
不,那不是我的意思和說的。留下foo作爲問號。 – Daan