Php 多查询选择使用错误的数组?

Php 多查询选择使用错误的数组?,php,mysql,arrays,Php,Mysql,Arrays,我有一个多重查询,选择哪一半有效。第一个查询是直截了当的 $sql = "SELECT riskAudDate, riskClientId, RiskNewId FROM tblriskregister ORDER BY riskId DESC LIMIT 1;"; 即使我自己做,第二个似乎也不起作用: $sql ="SELECT LAST(riskFacility) FROM tbleClients"; 如果我去掉最后一个,它将返回表中该字段的第一个条目。我想使用LAST来获取该字段中的最

我有一个多重查询,选择哪一半有效。第一个查询是直截了当的

$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>";
}
因此,数组位对于多重查询似乎是错误的。返回的数据是每个表中的一行。它适用于最上面的查询,但添加到第二个查询中(我不确定这是否正确),整个查询都崩溃了。所以我想这是一个由两部分组成的问题。我的插入和返回的数组有什么问题

  • mysql中没有
    last()
    函数,如果我没弄错的话,它只在ms access中受支持。在mysql中,您可以执行第1个查询中的操作:执行ORDERBY并将结果限制为1

  • 根据错误消息,
    $conn->query($sql)
    返回一个布尔值(可能为true),因此您不能对其调用
    $result->fetch\u数组(MYSQLI\u ASSOC)
    。因为我们不知道$sql变量中到底有什么,所以我只能说,您需要调试代码来确定
    $conn->query($sql)
    返回布尔值的原因

  • 虽然mysqli_query()的文档中没有那么清楚,但它只支持一次执行一个查询。要一次性执行多个查询,请使用(您也可以在OO模式下调用此查询,请参阅文档)。但是,出于安全原因,我宁愿分别调用mysqli_query()两次。如果无法执行多个查询,则成功执行sql注入攻击会更加困难


  • 在我看来,您试图同时执行两个SQL查询。 这是不可能的。分开做

    $sql ="SELECT LAST(riskFacility) FROM tbleClients";
    
    对于每个SQL查询

    关于:

    $sql ="SELECT riskFacility FROM tbleClients order by riskFacility desc limit 0,1";
    
    由于MySQL中不存在最后一个函数,我建议您进行这样的排序(因为我不知道您对最后一个函数的意思)


    什么是“多重查询”?您试图同时执行两个选择并从中获取结果?
    fetch_array
    如果没有结果,则返回
    null
    。很抱歉,我删除了一些内容以单独测试它们,这里是正确的:$sql=“SELECT riskAudDate,riskClientId,RiskNewId from tblriskregister ORDER BY riskId DESC LIMIT 1;”$sql.=“从tbleClients中选择riskFacility”;这是从多重查询“$sql SELECT riskAudDate,riskClientId,RiskNewId from tblriskregister ORDER BY riskId DESC LIMIT 1”返回的结果;从tbleClients ORDER BY riskFacility DESC LIMIT 1'对不起,我不知道你的评论是什么意思。mysql手册说你可以这样做,谢谢我使用排序来获取我想要的记录。是的,但是它使用->多查询($sql)和->存储结果(),然后->获取所有(MYSQLI\u ASSOC),这是一种不同的方法。如果你喜欢,我可以重新构造我的答案好的,我们有进展。我正在使用多重查询并得到我想要的结果。我使用var_export将返回的内容打印到屏幕上。这就是我得到的:'(0=>数组('riskAudDate'=>'18-04-2016','riskClientId'=>'bob down','RiskNewId'=>'1',),)数组(0=>数组('riskFacility'=>'JJJJ',),)我现在需要获取riskClient,RiskNewId和riskFacility作为变量从数组中删除,这样我就可以使用它们了。这就是我要解决的问题。可能是这样:$riskClientId=$whatevervar[0][0]['riskClientId'];谢谢@snitch182,但我仍然认为我离找回任何东西还有几步之遥。为了清楚起见,这里是我现在使用的代码。我使用var_dump来查看返回的是什么,这是我需要的信息。它是两个数组。一个用于第一个查询,另一个用于第二个查询。
    $sql ="SELECT LAST(riskFacility) FROM tbleClients";
    
    $sql ="SELECT riskFacility FROM tbleClients order by riskFacility desc limit 0,1";