由于某种原因,我的PDO语句在返回一个整数时会一直返回NULL。我试图直接将查询输入到我的数据库编辑器(HeidiSQL)中,它运行正常。
以下是代码:
private function subscribe_moeder(){
$email = $this -> args["email"];
if(!filter_var($email, FILTER_VALIDATE_EMAIL))return $this -> errors[] = "Invalid email \n";
# /# $Query = "SELECT * FROM subscribers WHERE email = :email";
# /## $core = Core::getInstance();
# /###
# This works +####
# \### $res = $core -> db -> prepare($Query);
# \## $res -> bindParam(":email", $email);
# \# $res -> execute();
if($found = $res -> fetch(PDO::FETCH_OBJ)){
# /# $Query = "SELECT (SELECT id FROM subscriber_binaries WHERE name='møder') &
# /## (SELECT attribute FROM subscribers WHERE email=:email) as s";
# /###
# This doesn't +#### $res = $core -> db -> prepare($Query);
# \### $res -> bindParam(":email", $email);
# \## $res -> execute();
# \# $s = $res -> fetch( PDO::FETCH_OBJ );
if($s -> s != 0){
$this -> response = 'Already subscribed';
} else {
$this -> response = $s->s;
}
}
}
答案 0 :(得分:2)
由于以下原因,这可能是编码问题:
您选择两个值并进行二元连接。如果结果为NULL
,则其中一个操作数必须为NULL
。由于后部可能不是NULL
,因为该行存在(我希望列中有一些值),前部必须是NULL
。查询中有一个特殊的丹麦字符,因此我假设根本没有选择要选择的行,使查询执行NULL & xxx
,其结果为NULL
。
尝试set the character set到UFT8并将文件另存为UTF8。
还尝试单独执行源代码(非PMA)中的第一个子查询,以验证它是否返回您期望的内容。