2个SQL查询.两者独立工作.当我把它们放在一起时,第一个查询的结果变量是空的.为什么?

2 SQL queries. Both work independently. When i do them together, result variables from 1st query are empty. Why?

本文关键字:查询 第一个 结果 为什么 在一起 变量 独立 SQL 工作 2个      更新时间:2023-09-26

我已经成功地将两个变量从Javascript传递到PHP,使用:

$("#element").load("script.php",{dataOne:x,dataTwo:y},function() {alert(y);});

以下两项独立工作:

数据第一:

$date = strval(gmdate("Y-m-d",strtotime($_POST['dataOne']))."T00:00:00");
$query = $dbc->prepare("SELECT NEW_DATE, BC_1MONTH, BC_3MONTH, BC_6MONTH, BC_1YEAR, BC_2YEAR, BC_3YEAR, BC_5YEAR, BC_7YEAR, BC_10YEAR, BC_20YEAR, BC_30YEAR  FROM curve WHERE NEW_DATE=?");
$query->bind_param('s',$date);
$query->execute();
$query->bind_result($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l);

然后是数据二:

$date = strval(gmdate("Y-m-d",strtotime($_POST['dataTwo']))."T00:00:00");
$query = $dbc->prepare("SELECT NEW_DATE, BC_1MONTH, BC_3MONTH, BC_6MONTH, BC_1YEAR, BC_2YEAR, BC_3YEAR, BC_5YEAR, BC_7YEAR, BC_10YEAR, BC_20YEAR, BC_30YEAR  FROM curve WHERE NEW_DATE=?");
$query->bind_param('s',$date);
$query->execute();
$query->bind_result($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l);

当我尝试将两者结合起来时,用这个:

$fromDate = strval(gmdate("Y-m-d",strtotime($_POST['dataOne']))."T00:00:00");
$query = $dbc->prepare("SELECT NEW_DATE, BC_1MONTH, BC_3MONTH, BC_6MONTH, BC_1YEAR, BC_2YEAR, BC_3YEAR, BC_5YEAR, BC_7YEAR, BC_10YEAR, BC_20YEAR, BC_30YEAR  FROM curve WHERE NEW_DATE=?");
$query->bind_param('s',$fromDate);
$query->execute();
$query->bind_result($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l);
$toDate = strval(gmdate("Y-m-d",strtotime($_POST['dataTwo']))."T00:00:00");
$query->bind_param('s',$toDate);
$query->execute();
$query->bind_result($m,$n,$o,$p,$q,$r,$s,$t,$u,$v,$w,$x);

第一个查询有空变量。对我来说,存储第一次执行结果的最佳方式是什么?最终,它们将进入一个javascript数组,以便在图中使用。

当我让它单独为dataOne工作时,我将结果连接到我的javascript中,如下所示:

 data: ['.$b.','.$c.','.$d.','.$e.','.$f.','.$g.','.$h.','.$i.','.$j.','.$k.','.$l.']

在执行第二个查询之前,我尝试在我的PHP中这样做,以避免它丢失。这目前不起作用:

$curve = '['.$b.','.$c.','.$d.','.$e.','.$f.','.$g.','.$h.','.$i.','.$j.','.$k.','.$l.']';
data: '.$curve.'

您不会使用.load()发布帖子,而是使用.post(),或者像一样使用$_GET传递变量

    $("#element").load("script.php?dataX="+x+"&dataTwo="+y+" #element");
jquery post  : http://api.jquery.com/jquery.post/
jquery load  : http://api.jquery.com/load/
**EDIT** if you want to use `.load()`
    $( "#element" ).load( "script.php", { "dataOne": x, "dataTwo":y } );
    $date = strval(gmdate("Y-m-d",strtotime($_POST['dataOne']))."T00:00:00");
    $date2 = strval(gmdate("Y-m-d",strtotime($_POST['dataTwo']))."T00:00:00"); //<--- same date
    $query = $dbc->prepare("SELECT NEW_DATE, BC_1MONTH, BC_3MONTH, BC_6MONTH, BC_1YEAR, BC_2YEAR, BC_3YEAR, BC_5YEAR, BC_7YEAR, BC_10YEAR, BC_20YEAR, BC_30YEAR  FROM curve WHERE NEW_DATE=?");
    $query->bind_param('s',$date);
    $query->bind_param('s',$date2); //<--- new query
    $query->execute();
    $query->bind_result($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l);