多查询使用错误的数组进行选择


multi query select using wrong array?

我有一个多查询选择哪一半有效。第一个查询是直接的。

$sql = "SELECT riskAudDate, riskClientId, RiskNewId FROM tblriskregister ORDER BY riskId DESC LIMIT 1;";

第二个似乎不起作用,即使我自己做:

$sql ="SELECT LAST(riskFacility) FROM tbleClients";

如果我去掉LAST,它将返回表中该字段中的第一个条目。我想使用最后一个来获得该字段中的最后一个条目。

当我自己进行第一个查询时,我会得到返回的数据,我可以将其回显到屏幕上。当我加上第二个(没有最后一个)时,我一无所获。以下是我正在使用的

$result = $conn->query($sql);      
if ($result == TRUE){     
    $r = $result->fetch_array(MYSQLI_ASSOC);
    echo $r['riskAudDate']; 
    echo $r['riskClientId'];
    echo $r['RiskNewId'];
    echo $r['riskFacility'];
    echo "<pre>";
    print_r($r);
    echo "</pre>";
}

最后一点只是让我看看数组中有什么,只是为了测试。所以我发现结果数组是不对的。如果我将实际查询更改为多查询,我会得到以下信息:

Call to a member function fetch_array() on boolean 

因此,对于多查询来说,数组位似乎是错误的。返回的数据是每个表中的一行。它适用于顶部查询,但加上第二个查询(无论如何我都不确定是否正确),整个查询就会崩溃。所以我想这是一个由两部分组成的问题。我的插入和返回的数组有什么问题?

  1. mysql中没有last()函数,如果我没有错的话,它只在ms访问中受支持。在mysql中,您可以执行在第一个查询中所做的操作:通过进行排序并将结果限制为1。

  2. 根据错误消息,$conn->query($sql)返回一个布尔值(可能为true),因此您不能对其调用$result->fetch_array(MYSQLI_ASSOC)。由于我们不知道$sql变量中到底有什么,所以我可以说,您需要调试代码来解释$conn->query($sql)返回布尔值的原因。

  3. 虽然从mysqli_query()的文档中看不太清楚,但它一次只支持执行一个查询。要一次性执行多个查询,请使用mysqli_multi_query()(也可以在OO模式下调用此查询,请参阅文档)。但是,出于安全考虑,我宁愿分别调用mysqli_query()两次。如果不能执行多个查询,那么执行成功的sql注入攻击会更加困难。

在我看来,您试图同时执行两个SQL查询。这是不可能的。进行单独的

$result = $conn->query($sql); 
if ($result == TRUE){     
    while( $r = $result->fetch_array(MYSQLI_ASSOC)) {
        ...
    } 
}

对于每个SQL查询。

关于:

$sql ="SELECT LAST(riskFacility) FROM tbleClients";

由于最后一个函数在MySQL中不存在,我建议做这样的排序(因为我不知道最后一个是什么意思)

$sql ="SELECT riskFacility FROM tbleClients order by riskFacility desc limit 0,1";