Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php fetch()查询的意外返回_Php_Pdo - Fatal编程技术网

Php fetch()查询的意外返回

Php fetch()查询的意外返回,php,pdo,Php,Pdo,我试图检测result和result1是否作为行存在于我的数据库中,我想知道我做错了什么,因为它回显2,而它应该回显1。我已经仔细检查了所有的数据和帖子 提前感谢。首先,您应该使用准备好的语句和参数绑定。其次,我不明白你为什么要提出两个问题。只需将这两个条件组合成一个WHERE子句。例如 $result = $db->query("SELECT 1 FROM mxscript_slayer_licensekeys WHERE `username

我试图检测result和result1是否作为行存在于我的数据库中,我想知道我做错了什么,因为它回显2,而它应该回显1。我已经仔细检查了所有的数据和帖子


提前感谢。

首先,您应该使用准备好的语句和参数绑定。其次,我不明白你为什么要提出两个问题。只需将这两个条件组合成一个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;