如果我添加“ WHERE x =”,为什么fetch_assoc()返回NULL?这个MySQL查询中的子句?

时间:2019-03-11 22:01:01

标签: php mysql

谁能告诉我为什么第一个查询回显结果,而第二个查询在结果集中返回null?

$sql1 = '
    SELECT
        SQL_CALC_FOUND_ROWS
        *
    FROM
        table1
    LEFT JOIN table2 ON id_a = id_b 
    LEFT JOIN table3 ON id_c = id_d
    WHERE id_d IS NOT NULL 
    AND l_type <> 2 
    AND l_status = 2 
    AND v_status >= 1 
    AND l_end_date >= CURDATE() 
    ORDER BY 1 ASC 
    LIMIT 20
$sql2 = '
    SELECT
        SQL_CALC_FOUND_ROWS
        *
    FROM
        table1
    LEFT JOIN table2 ON id_a = id_b 
    LEFT JOIN table3 ON id_c = id_d
    WHERE id_d IS NOT NULL 
    AND id_d = ? //the only difference
    AND l_type <> 2 
    AND l_status = 2 
    AND v_status >= 1 
    AND l_end_date >= CURDATE() 
    ORDER BY 1 ASC 
    LIMIT 20

我正在像过去每隔数百次一样准备,绑定和执行占位符参数。我感到困惑,为什么第二个查询没有给出任何结果?

让我知道我的问题是否缺乏细节-我的代码是如此简单,因此根本没有更多内容。

我什至尝试过将占位符替换为实际值,该实际值是一串数字,例如123456789。当我也在本地测试时,该查询在phpmyadmin中工作正常。可能是什么问题?

这是我尝试过的方法,但是没有出现错误。这只是一个空白页。

$stmt2 = $db->prepare($sql2); 
if (false === $stmt2) { 
print_r($db->error_list); 
echo mysqli_error($db); 
echo $stmt2->error; 
}

其中$ db是$db = new mysqli($dbHost, $dbUser, $dbPass, $dbName);

0 个答案:

没有答案
相关问题