我的MySQL数据库查询有问题。我必须在图表中表示一些变量。
到目前为止我已经
了我的PHP代码有一个POST函数,它使用内部联接进行查询,具体取决于我的变量是否在同一个表中。此查询获取具有datetime和所有变量的表。这个POST功能运行良好,我测试了它。
问题是我想要代表4个以上的变量。如果我想表示5个变量,我可以表示少于97,000行。如果我想表示6个变量,我可以表示少于86,000行(每次我添加一个变量,我会丢失大约11,000行)。
我的javascript代码
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();
mysql.php中的post函数
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);
}
方法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;
}
我认为问题可能是while循环没有完成,具体取决于变量的数量。我想这是因为数组的内存大小。
有人能帮助我吗?