gpt4 book ai didi

php - 带有位字段的 PDO 准备语句

转载 作者:可可西里 更新时间:2023-11-01 07:45:23 25 4
gpt4 key购买 nike

我在使用 PDO 准备语句和 bit 数据类型时遇到问题

当使用 PDO 准备语句从数据库中检索结果时,返回一个空结果集,但如果查询是由普通的 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

返回

返回正确的行数

最佳答案

这里是\n无法查询的问题

$sql = "SELECT id,client_id,is_admin,is_demo\n"
."FROM user\n"
."WHERE is_demo=? && client_id=? && name=? && pass=?\n"
."ORDER BY name";

关于php - 带有位字段的 PDO 准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com