为什么我的PDO语句返回NULL?

时间:2014-07-16 12:45:06

标签: php

由于某种原因,我的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;

                                }

                        }

                }

1 个答案:

答案 0 :(得分:2)

由于以下原因,这可能是编码问题:

您选择两个值并进行二元连接。如果结果为NULL,则其中一个操作数必须为NULL。由于后部可能不是NULL,因为该行存在(我希望列中有一些值),前部必须是NULL。查询中有一个特殊的丹麦字符,因此我假设根本没有选择要选择的行,使查询执行NULL & xxx,其结果为NULL

尝试set the character set到UFT8并将文件另存为UTF8。

还尝试单独执行源代码(非PMA)中的第一个子查询,以验证它是否返回您期望的内容。