2012-07-03 27 views
0

由于某些原因,我的一些SQL查询似乎处理奇怪的数字。例如,在mySQL数据库中,我有一个名为points的用户名为INT(11)的表。当我尝试检索这个字段时,有时它会正确返回,而其他时候它会返回null。该查询返回"User fMcBBx has points according to database"每次:MySQL或Zend有时会返回空值而不是数字

$query = "SELECT points FROM users WHERE user_id = '$this->getID()'"; 
    $result = DBCore::call()->fetchRow($query); 
    echo "User {$this->getID()} has {$result['points']} points according to database"; 

虽然这一个从我的构造正确每次返回数字,如"User fMcBBx has 1050 points according to database"

SELECT first, 
     last, 
     email, 
     points, 
     level, 
     gender 
FROM users 
WHERE user_id = '{$this->id}' 

我还没有发现任何的模式在做查询并且不要正确返回此字段。我已经通过在PHPmyAdmin中针对数据库运行它们来检查它们,以确保它们都工作正常,并且我已经回显了所有输入值以确保它们正确传输。为什么我可能会在某些查询中得到空值,但不是其他值呢?

+0

如果您可以提供一些测试数据和查询来重现此行为,那将会很好。看看你的问题,我不明白为什么这些查询会产生不同的结果。 – dcp

+0

它是否总是返回空值的查询相同,或者在不同的时间运行相同的查询返回不同的东西?从你的问题来看并不完全清楚,但我怀疑它是前者。如果我们能看到一些失败的查询,以及表和一些示例数据的结构,这将有助于回应@dcp。 – andrewsi

+0

是什么让你觉得它返回null?为什么它不会返回任何一行?你为什么认为这是查询?为什么你认为它不可能是你的this.getID()参数在不同的时间可能会不同? – Sebas

回答

0

当我在第一个查询$query = "SELECT points FROM users WHERE user_id = '{$this->getID()}'";的函数调用中加上大括号时,它可以很好地工作。 Php不能以它能够读取变量的方式评估双引号字符串中的函数调用,在函数调用周围放置大括号可以使它正确评估函数调用。