Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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
Javascript 从Mysql查询中获取5列及其值并转换为PHP_Javascript_Php_Mysql_Sql_Variables - Fatal编程技术网

Javascript 从Mysql查询中获取5列及其值并转换为PHP

Javascript 从Mysql查询中获取5列及其值并转换为PHP,javascript,php,mysql,sql,variables,Javascript,Php,Mysql,Sql,Variables,经过几次尝试,我无法找到一个简单而优雅的解决方案 本质上,我想要一种方法来获取从这个查询中获取的5个字段,并将它们分配给PHP变量,然后再分配给最近的Javascript变量 <?php include_once('connect.php'); $result = mysqli_query($conn, " SELECT DISTINCT IPdestport as destport,COUNT(*) as count FROM PACKETSFORIP GROUP BY

经过几次尝试,我无法找到一个简单而优雅的解决方案

本质上,我想要一种方法来获取从这个查询中获取的5个字段,并将它们分配给PHP变量,然后再分配给最近的Javascript变量

<?php
    include_once('connect.php');
    $result = mysqli_query($conn, " SELECT DISTINCT IPdestport as destport,COUNT(*) as count FROM PACKETSFORIP GROUP BY destport ORDER BY count DESC LIMIT 5;");  

    while($row[] = mysqli_fetch_array($result))
    {
        $destport1 = $row[1][ 'destport' ];
        $destport2 = $row[2]['destport'];
        $destport3 = $row[3]['destport'];
        $destport4 = $row[4]['destport'];
        $destport5 = $row[5]['destport'];
        $count1 = $row[1]['count'];            
        $count2 = $row[2]['count'];
        $count3 = $row[3]['count'];
        $count4 = $row[4]['count'];
        $count5 = $row[5]['count']; 

    }
    ?>
                        var obj = <?php echo $portarray; ?>;

                    for(var i= 0; i < obj.length; i++) {
                    var json = obj[i];
                    destport = json.destport;
                    numberofpackets = json.count;


                    destport = destport.toString();
                    numberofpackets= parseInt(numberofpackets);

下面是更多的代码,我将最终如何将这些PHP变量转换为Javascript变量,以便将它们处理为google图表

var destport1 = "<?php echo $destport1 ?>";
var destport2 = "<?php echo $destport2 ?>";
var destport3 = "<?php echo $destport3 ?>";
var destport4 = "<?php echo $destport4 ?>";
var destport5 = "<?php echo $destport5 ?>";
var count1 = "<?php echo $count1 ?>";
var count2 = "<?php echo $count2 ?>";
var count3 = "<?php echo $count3 ?>";
var count4 = "<?php echo $count4 ?>";
var count5 = "<?php echo $count5 ?>";
var destport1=“”;
var destport2=“”;
var destport3=“”;
var destport4=“”;
var destport5=“”;
var count1=“”;
var count2=“”;
var count3=“”;
var count4=“”;
var count5=“”;

任何帮助都将不胜感激。谢谢。

使用数组可以节省大量重复代码

要简化第一步(将它们分配给PHP变量),只需将结果集转换为数组:

$destPorts = mysqli_fetch_all($result);
$destPorts
将包含结果集中的所有行。如果要访问第二行的“计数”列,请使用:

$destPorts[1]['count']
$destPorts[3]['destport']
destPorts[1].count
destPorts[3].destport
或要访问第四行的“destport”列,请使用:

$destPorts[1]['count']
$destPorts[3]['destport']
destPorts[1].count
destPorts[3].destport
由于这些值存储在$destPorts数组中,因此无需将它们转换为单独的变量

<?php
    include_once('connect.php');
    $result = mysqli_query($conn, " SELECT DISTINCT IPdestport as destport,COUNT(*) as count FROM PACKETSFORIP GROUP BY destport ORDER BY count DESC LIMIT 5;");  

    while($row[] = mysqli_fetch_array($result))
    {
        $destport1 = $row[1][ 'destport' ];
        $destport2 = $row[2]['destport'];
        $destport3 = $row[3]['destport'];
        $destport4 = $row[4]['destport'];
        $destport5 = $row[5]['destport'];
        $count1 = $row[1]['count'];            
        $count2 = $row[2]['count'];
        $count3 = $row[3]['count'];
        $count4 = $row[4]['count'];
        $count5 = $row[5]['count']; 

    }
    ?>
                        var obj = <?php echo $portarray; ?>;

                    for(var i= 0; i < obj.length; i++) {
                    var json = obj[i];
                    destport = json.destport;
                    numberofpackets = json.count;


                    destport = destport.toString();
                    numberofpackets= parseInt(numberofpackets);
您可以在JavaScript中执行类似的操作。不是创建单独的变量,而是:

或要访问第四行的“destport”列,请使用:

$destPorts[1]['count']
$destPorts[3]['destport']
destPorts[1].count
destPorts[3].destport

当您将结果行存储在数组和对象中而不是简单的数字索引变量中时,您的代码重复性更小,更灵活。您不再需要知道数据库中有多少个结果;您只需在阵列或对象上循环并访问所有数据。

对于将来搜索此项的任何人,这是我最终使用的解决方案。在我以前编写的web应用程序中找到它

       <?php
                     include_once('connect.php');
      $result = mysqli_query($conn, " SELECT DISTINCT IPdestport as destport,COUNT(*) as count FROM PACKETSFORIP GROUP BY destport ORDER BY count DESC LIMIT 5;");  
          $portsarray = Array();
          $countarray = Array();
            while($row = mysqli_fetch_array($result))
              {
        $portarray[] = array('destport'=>$row['destport'], 'count'=>$row['count']);
            echo $row['count'];
              }

          $portarray = json_encode($portarray);


    ?>

上面的代码获取每个端口以及发送到该端口的数据包的数量,这些数据后来被转换成javascript并输入到google图表中,但我将只展示获取PHP数组并将其中包含的变量放入javascript变量的部分

<?php
    include_once('connect.php');
    $result = mysqli_query($conn, " SELECT DISTINCT IPdestport as destport,COUNT(*) as count FROM PACKETSFORIP GROUP BY destport ORDER BY count DESC LIMIT 5;");  

    while($row[] = mysqli_fetch_array($result))
    {
        $destport1 = $row[1][ 'destport' ];
        $destport2 = $row[2]['destport'];
        $destport3 = $row[3]['destport'];
        $destport4 = $row[4]['destport'];
        $destport5 = $row[5]['destport'];
        $count1 = $row[1]['count'];            
        $count2 = $row[2]['count'];
        $count3 = $row[3]['count'];
        $count4 = $row[4]['count'];
        $count5 = $row[5]['count']; 

    }
    ?>
                        var obj = <?php echo $portarray; ?>;

                    for(var i= 0; i < obj.length; i++) {
                    var json = obj[i];
                    destport = json.destport;
                    numberofpackets = json.count;


                    destport = destport.toString();
                    numberofpackets= parseInt(numberofpackets);
var obj=;
对于(变量i=0;i
如果代码的第一部分有效,只需将第二部分放在
标记中,它就可以完成任务(虽然不漂亮,但可以正常工作)