而循环在PHP/MySQL中没有完成

而循环在PHP/MySQL中没有完成,php,mysql,while-loop,Php,Mysql,While Loop,我在MySQL数据库中的查询有问题。我必须在图形中表示一些变量 到目前为止我有 JavaScript,读取我必须表示的变量并使用Ajax发布 处理POST的PHP代码 我的PHP代码有一个POST函数,根据变量是否在同一个表中,使用内部联接执行查询。此查询获取一个包含datetime和所有变量的表。这个POST函数运行得很好,我对它进行了测试 问题是当我想要表示4个以上的变量时。如果我想表示5个变量,我可以表示少于97000行。如果我想表示6个变量,每次添加一个变量时,我可以表示不到86000行

我在MySQL数据库中的查询有问题。我必须在图形中表示一些变量

到目前为止我有

JavaScript,读取我必须表示的变量并使用Ajax发布 处理POST的PHP代码 我的PHP代码有一个POST函数,根据变量是否在同一个表中,使用内部联接执行查询。此查询获取一个包含datetime和所有变量的表。这个POST函数运行得很好,我对它进行了测试

问题是当我想要表示4个以上的变量时。如果我想表示5个变量,我可以表示少于97000行。如果我想表示6个变量,每次添加一个变量时,我可以表示不到86000行,而我会丢失大约11000行

我的javascript代码

php中的post函数

我认为问题可能在于while循环没有完成,这取决于变量的数量。我想这是因为数组的内存大小


有人能帮我吗?

那么到底什么不起作用-当您请求5个或更多变量时,会发生什么?当我请求5个变量时,控制台会显示500 HTML错误。我检查了getArraySQL方法中是否存在错误。然后我检查了一下,如果我只想在while循环中表示97000行->if$iOK,那么这可能是一个内存错误-为什么要一次返回100k结果?不是我想一次返回100k结果,我想表示表中的所有数据。我的表有超过100k个结果,每分钟它都会随着用于存储实时数据的行数的增加而增长。我想表示图形中的每一行,但我不知道如何分割这些数据以避免这种内存错误。你有什么建议吗?非常感谢。谢谢你的回答,史蒂夫!
jQuery.extend({
    llamada: function() {
        var result=null;
        $.ajax({
            type:'POST',
            async: false,
            dataType: 'json',
            url:"includes/mysql.php",
            data: { tarea:'ejecutarQuery',
                table: varNames,
                columna: varLocations
            },
            success: function(respuesta){
                alert(respuesta);
                /*result=respuesta;*/
            }
        });
        return result;
    }
});
var myServerData = $.llamada();
if($_POST["tarea"]=="ejecutarQuery"){
    $columnas = $_POST["columna"];
    $tablas = $_POST["table"];
    $tablacolumna = array();
    $frasecolumnas="";
    for($j=0;$j<count($columnas);$j++){
      $tablacolumna[$j]=$tablas[$j].".".$columnas[$j];
      if($j==0){
        $frasecolumnas=$tablacolumna[0];
      }
      else{
        $frasecolumnas=$frasecolumnas.",".$tablacolumna[$j];
      }
    }
    $tablasdiferentes= array();
    $tablasdiferentes[0]=$tablas[0];
    $contador=0;
    for($j=1;$j<count($tablas);$j++){
      for($i=0;$i<count($tablasdiferentes);$i++){
        if($tablas[$j]==$tablasdiferentes[$i]){
          break 1;
        }
        if($i==$contador){
          $tablasdiferentes[$i+1]=$tablas[$j];
          $contador++;
        }
      }
    }
    $frasetablas="FROM ".$tablas[0]." ".$tablas[0]." ";
    $fraseError =" where ".$tablas[0].".ErrorBit=0";
    for($j=1;$j<count($tablasdiferentes);$j++){
      $frasetablas=$frasetablas."inner join ".$tablasdiferentes[$j]." ".$tablasdiferentes[$j]." on ".$tablas[0].".datetime=".$tablasdiferentes[$j].".datetime ";
      $fraseError =$fraseError." and ".$tablasdiferentes[$j].".ErrorBit = 0";
    }
    $sql="SELECT ".$tablas[0].".datetime,".$frasecolumnas." ".$frasetablas.$fraseError.";";
    $rawdata=getArraySQL($sql);
    echo json_encode($rawdata);  
  }
function getArraySQL($sql){
    $conexion = conectarBD();
    mysql_set_charset('utf8',$conexion);
    if(!$result = mysqli_query($conexion, $sql)) die(mysql_error);
    $rawdata = array();
    $i=0;
    while($row = mysqli_fetch_array($result,MYSQL_NUM))
    {
      $time = $row[0];
      $date = new DateTime($time);
      $row[0] = $date->getTimestamp()*1000;
      $rawdata[$i] = $row;
      $i++;
    }
    desconectarBD($conexion);
    return $rawdata;
  }