$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;
}
我正在尝试检测result
和result1
是否存在于我的数据库中的行中,我想知道我做错了什么,因为它回应2,它应该回显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;
虽然您的代码不是特别有效或安全,但我不确定为什么它不能按预期工作。需要更多信息。