Php fetch()查询的意外返回
我试图检测result和result1是否作为行存在于我的数据库中,我想知道我做错了什么,因为它回显2,而它应该回显1。我已经仔细检查了所有的数据和帖子Php fetch()查询的意外返回,php,pdo,Php,Pdo,我试图检测result和result1是否作为行存在于我的数据库中,我想知道我做错了什么,因为它回显2,而它应该回显1。我已经仔细检查了所有的数据和帖子 提前感谢。首先,您应该使用准备好的语句和参数绑定。其次,我不明白你为什么要提出两个问题。只需将这两个条件组合成一个WHERE子句。例如 $result = $db->query("SELECT 1 FROM mxscript_slayer_licensekeys WHERE `username
提前感谢。首先,您应该使用准备好的语句和参数绑定。其次,我不明白你为什么要提出两个问题。只需将这两个条件组合成一个WHERE子句。例如
$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;
}
使现代化
虽然您的代码不是特别有效或安全,但我不确定它为什么不能按预期工作。需要更多信息。我想说,你做错的最大一件事是你没有使用准备好的/参数化的qeuries,这让你很容易受到SQL注入攻击。你能给我一个例子,说明我如何着手解决这个问题吗?谢谢。@Chase,看看Phil的答案。我可以大胆猜测$result或$result1是假的。在数据库对象上启用异常是一种很好的做法,即$db->setAttributePDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION;。嗨,蔡斯。您需要检查您的值。请回显$result->fetchPDO::FETCH_NUM和$result1->fetchPDO::FETCH_NUM虽然这很有用,但它并没有解释代码不起作用的原因。在第二个绑定中键入,逗号应该是m。但是正如Jack在另一个注释中指出的,array…>“0是真的,所以它似乎应该起作用。”JohnV干杯。快速键入容易出错:我定义了两个用户变量,一个作为我的帖子数据,另一个作为我的数据库用户名。哈哈。顺便问一下,我应该替换你帖子中的“?”吗?再次感谢
// 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;