douyue9704 2015-04-16 10:19
浏览 28

too long

I have a problem with my queries at my MySQL database. I have to represent some variables in a graph.

So far I have

  • JavaScript that reads what variables I have to represent and POST with Ajax
  • PHP code to handle the POST

My PHP code has a POST function that does a query with inner joins depending if my variables are in the same table or not. This query obtains a table with datetime and all the variables. This POST function works well, I tested it.

The problem is when I want to represent more than 4 variables. If I want to represent 5 variables, I can represent less than 97,000 rows. If I want to represent 6 variables, I can represent less than 86,000 rows (each time I add a variable I lose around 11,000 rows).

My javascript code

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();

The post function in mysql.php

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);  
  }

method getArraySQL

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;
  }

I think that the problem may be that the while loop does not finish depending on the number of variables. I suppose it is because of the array's memory size.

Can anybody help me?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
    • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
    • ¥16 mybatis的代理对象无法通过@Autowired装填
    • ¥15 可见光定位matlab仿真
    • ¥15 arduino 四自由度机械臂
    • ¥15 wordpress 产品图片 GIF 没法显示
    • ¥15 求三国群英传pl国战时间的修改方法
    • ¥15 matlab代码代写,需写出详细代码,代价私
    • ¥15 ROS系统搭建请教(跨境电商用途)
    • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。