使用应生成相同输出的不同方法的意外结果集

时间:2018-05-27 22:35:58

标签: php mysqli pdo

将一个PDO类与Mysqli一起使用会得到意想不到的结果。检查这个比较应该产生相同的结果imho。

$versions是一个包含元素8,9或两者的数组。 在下面的两个示例中,数组是:

Array
    (
        [0] => 9
        [1] => 8
    )

使用此(更正确)PDO方法:

function getQuestions($nrOfQuestions = 25, $versions){
    $versions = implode(",", $versions);
    $args= array(
            "nrOfQ" => $nrOfQuestions
            ,"versions" => $versions
    );
    return $db->query("SELECT * FROM `" . TABLE . "` WHERE `version` IN (:versions) && `qc` >= 1 ORDER BY RAND() LIMIT :nrOfQ", $args);
}

意外结果 所有的结果都是第9版(我希望8这里有aswel)

使用这个(脏?)连接方法:

function getQuestions($nrOfQuestions = 25, $versions){
    $versions = implode(",", $versions);
    $args= array(
            "nrOfQ" => $nrOfQuestions
    );
    return $db->query("SELECT * FROM `" . TABLE . "` WHERE `version` IN (" . $versions . ") && `qc` >= 1 ORDER BY RAND() LIMIT :nrOfQ", $args);
}

结果符合预期 :结果是预期的随机版本8和9。

我的问题是: 为什么结果集中存在差异? 在两种情况下,查询中的IN子句应为(9,8),但会产生不同的结果。

0 个答案:

没有答案