我有同样的问题a,一个好的sql语句,没有错误,但使用wpdb没有结果。
对我来说,解决方法是为我的表使用正确的排序规则/字符编码(例如,COLLATE“utf8\\U general\\U ci”)。
我有一个有效的查询,该表被另一台服务器(和旧服务器)的转储文件替换,我的查询停止工作。它返回NULL或0,即使在数据库中运行查询也会返回正确的结果。
我以两种方式创建表(有几次,因为我不相信),运行相同的数据插入脚本,并且没有更改我的PHP/wpdb代码。
使用此创建表时,我的查询不起作用。
CREATE TABLE IF NOT EXISTS `vf_user` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`email` varchar(50) NOT NULL,
`full_name` varchar(25) NOT NULL,
`password` varchar(25) NOT NULL,
`role` enum(\'user\',\'tester\',\'admin\') NOT NULL DEFAULT \'user\',
`phone` varchar(25) NOT NULL,
`last_modified` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`user_activation_key` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `email` (`email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=325 DEFAULT CHARSET=utf8 COMMENT=\'users table\';
当用这个创建查询时,我的查询确实返回了结果
CREATE TABLE `vf_user` (
`id` MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
`email` VARCHAR(50) NOT NULL COLLATE \'utf8_general_ci\',
`full_name` VARCHAR(25) NOT NULL COLLATE \'utf8_general_ci\',
`password` VARCHAR(25) NOT NULL COLLATE \'utf8_general_ci\',
`role` ENUM(\'user\',\'tester\',\'admin\') NOT NULL DEFAULT \'user\' COLLATE \'utf8_general_ci\',
`phone` VARCHAR(25) NOT NULL COLLATE \'utf8_general_ci\',
`last_modified` TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`user_activation_key` VARCHAR(100) NULL DEFAULT NULL COLLATE \'utf8_general_ci\',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `email` (`email`) USING BTREE
)
COMMENT=\'users with access to the virtual festival\'
COLLATE=\'utf8_general_ci\'
ENGINE=InnoDB
AUTO_INCREMENT=325
;