1
$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。我已经仔细检查了所有数据和发布。 .

提前致谢。

4

1 回答 1

-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;

更新

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

于 2013-07-23T02:55:11.477 回答