Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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 使用PDO的多个查询_Php - Fatal编程技术网

Php 使用PDO的多个查询

Php 使用PDO的多个查询,php,Php,所以我的问题是: 我在同一个PHP页面上有不同的查询(选择查询)。每个查询都可以单独工作(我已经对它们进行了测试)。 这些查询用于生成html表,然后使用jquery插件显示图形(用户可以通过复选框选择要在页面上显示的图形)。但是,我只能显示一个图形,因为刷新页面时只有一个查询可以工作。其他人没有结果。我已经尝试过将函数NextRowset()与do一起使用,但它不起作用(即使没有错误) 以下是我的代码的一部分,您可以看到: foreach($_POST['choixCourbe'] as $c

所以我的问题是: 我在同一个PHP页面上有不同的查询(选择查询)。每个查询都可以单独工作(我已经对它们进行了测试)。
这些查询用于生成html表,然后使用jquery插件显示图形(用户可以通过复选框选择要在页面上显示的图形)。但是,我只能显示一个图形,因为刷新页面时只有一个查询可以工作。其他人没有结果。我已经尝试过将函数NextRowset()与do一起使用,但它不起作用(即使没有错误)
以下是我的代码的一部分,您可以看到:

foreach($_POST['choixCourbe'] as $choixCourbe) {

if ($choixCourbe=='courantBatterie') {  

    $sql = 'SELECT batteryCurrent FROM data ORDER BY id' 
    $stmt = $bdd->prepare($sql1);                           
    $stmt->execute();           
    do {        
        $rows = $stmt->fetchAll(PDO::FETCH_BOTH);} while ($stmt->nextRowset());                     

    if ($rows == false) { echo 'No result';}

    else { /*create table*/ }
    $stmt->closeCursor();
}

if ($choixCourbe=='courantSolaire') {   

    $sql = 'SELECT sunCurrent FROM data ORDER BY id';

    $stmt = $bdd->prepare($sql);                        
    $stmt->execute();
    do {            
        $rows = $stmt->fetchAll(PDO::FETCH_BOTH);} while ($stmt->nextRowset());                     

    if ($rows == false) {echo 'No result';}

    else {/*create table*/}
    $stmt->closeCursor();
}
}
在上面的代码中,当用户单击两个对应的复选框时,应该能够看到两个图形(我已经检查了复选框的两个值是否都被正确考虑,所以这不是问题所在),但是当前只有一个图形

你知道问题出在哪里吗

谢谢你的回答


苏菲

就我所见,这个问题就像两个相互矛盾的条件一样愚蠢

if ($choixCourbe=='courantBatterie') { 
and
if ($choixCourbe=='courantSolaire') { 
显然,一次只能执行一个


因此,这个问题与HTML相关。将您的复选框命名为
choixCourbe[]
,然后在PHP中使用
in_array()。格式化你的代码,让一个人不需要不断滚动就可以阅读它。2.摆脱那些你试图添加的毫无意义的东西,让代码保持初始状态?谢谢你,这段代码
while($stmt->nextRowset())
是为?这是因为我在互联网上读到PDO不能返回多个查询。这就是为什么我在PHP文档中使用函数nextRowset(),它是通过do while实现的。但我不确定这是否行得通,这就是为什么我要求你去掉你添加的所有无用代码。谢谢你的回答。我忘了写“foreach”,我用它来测试选中的复选框的值。我的复选框已经有了choixCourbe[]这样的名称,然后调试代码。看看它是否进入其他街区。