我遇到一個問題,當與PDO工作準備語句和bit
數據類型PDO準備與位域
當檢索從DB結果與PDO準備語句中的查詢結果爲空是returnd語句,但正確的結果返回如果查詢是通過正常的SQL查詢
如果省略WHERE子句在現場is_demo
它的作品,因爲它應該做!?
數據庫表結構
CREATE TABLE IF NOT EXISTS `user` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`client_id` smallint(5) unsigned NOT NULL,
`is_admin` bit(1) NOT NULL,
`is_demo` bit(1) NOT NULL,
`name` varchar(30) NOT NULL,
`pass` varbinary(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `client_id` (`client_id`),
KEY `is_admin` (`is_admin`),
KEY `is_demo` (`is_demo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
PDO預處理語句
$sql = "SELECT id,client_id,is_admin,is_demo\n"
."FROM user\n"
."WHERE is_demo=? && client_id=? && name=? && pass=?\n"
."ORDER BY name";
$fields = [
0,
500,
'test',
123
];
$sth = $dbh->prepare($sql);
$sth->execute($fields);
返回
PDOStatement Object
(
[queryString] => SELECT id,client_id,is_admin,is_demo
FROM user
WHERE is_demo=? && client_id=? && name=? && pass=?
ORDER BY name
)
沒有行返回
普通查詢
SELECT id, client_id, is_admin, is_demo
FROM user
WHERE is_demo=0 && client_id=500 && name='test' && pass=123
ORDER BY name
返回
返回行
提示:對於多行字符串分配,請使用[HEREDOC](http://php.net/heredoc)。它們更容易閱讀,並且不必嵌入'\ n'換行符並擔心引用轉義。 –
+1,可在此處重現。 – goat
http://stackoverflow.com/questions/10540483/pdostatement-mysql-inserting-value-0-into-a-bit1-field-results-in-1-written – goat