fetch()查询意外返回

时间:2013-07-23 02:50:05

标签: php pdo

$result = $db->query("SELECT 1 FROM mxscript_slayer_licensekeys 
                      WHERE `username` = '$user'");
$result1 = $db->query("SELECT 1 FROM mxscript_slayer_licensekeys 
                       WHERE `hardwareID` = '$id'");

if (($result && $result->fetch(PDO::FETCH_NUM) > 0) 
    && ($result1 && $result1->fetch(PDO::FETCH_NUM) > 0)) {
    echo '1';
    exit;
} else {
    echo '2';
    exit;
}

我正在尝试检测resultresult1是否存在于我的数据库中的行中,我想知道我做错了什么,因为它回应2,它应该回显1我已经仔细检查了所有数据并发布了..

提前致谢。

1 个答案:

答案 0 :(得分:-1)

首先,您应该使用预准备语句和参数绑定。其次,我不明白为什么你要发出两个查询。只需将两个条件合并为一个WHERE子句即可。例如......

// enable error reporting and exception errors in PDO
error_reporting(E_ALL);
ini_set('display_errors', 'On');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$result = $db->prepare('SELECT COUNT(1) FROM mxscript_slayer_licensekeys WHERE `username` = ? AND `hardwareID` = ?');
$result->bindParam(1, $user);
$result->bindParam(2, $id);
$result->execute();

printf('%d row(s) found for username "%s" and hardwareID %s',
    $result->fetchColumn(), $user, $id);
exit;

更新

虽然您的代码不是特别有效或安全,但我不确定为什么它不能按预期工作。需要更多信息。