从mysql表中获取行到php数组并将其传递给ajax

Posted

技术标签:

【中文标题】从mysql表中获取行到php数组并将其传递给ajax【英文标题】:get rows from mysql table to php array and pass it to ajax 【发布时间】:2018-02-05 16:09:12 【问题描述】:

我正在尝试通过ajaxphp 中的 mysql_query 和 mysql_fetch_array 的常规方式从常规表中获取值

if ($comtype==3)
        $getsteps = mysql_query("SELECT id FROM steps WHERE id = $id");

        $row = mysql_fetch_array($getsteps);
        if($row != false)
            $steps_array = array();
            while ($row = mysql_fetch_array($getsteps, MYSQL_ASSOC)) 
            
                array_push($steps_array,$row);
            
            $countsteps = count($steps_array);

            error_log("count: ".$countsteps);
            error_log(print_r($steps_array));

            echo json_encode(array("comtype" => $comtype, "countsteps" => $countsteps, "steps" => $steps_array)); 
         else 
            //error
        
    

在php 错误日志中:

[2017 年 8 月 28 日 11:25:32 UTC] 计数:1 [2017 年 8 月 28 日 11:25:32 UTC] 1

虽然我知道的计数是 2 行!!!

在ajax

$.ajax(
            type:'POST',
            url:'app/check.php',
            data: 'ID':ID,
            dataType: 'json',
            success: function(value)
                if (value.comtype== "0") 
                        $("#newC").show();
                        $("#hadC").hide();
                     else 
                        var method;
                        var com;
                        com = "<div class='clearfix'></div><br><h3>old.</h3>";
                        com += "By Stpes: <br>";

                            for (i = 0; i < value.countsteps; i++)  
                                com += "Step " + Number(i)+1 + ": Greater Than " + value.steps_array['calfrom'] + " AND Less Than or Equal " + value.steps_array['calto'] + " Apply "  + value.steps_array['calapl'] + " % <br>";
                            
                        

                        $("#hadC").html(com);
                        $("#hadC").show();
                        $("#newC").hide();
                    
                   
            );

问题是: 1.我不知道如何将数据从while推入数组? 2.不知道怎么用ajax循环到这个数组里查看html div?

【问题讨论】:

首先停止使用mysql_*的弃用+删除版本。转到mysqli_*PDO(连同prepared statement 以防止您的查询被SQL 注入)。对于当前代码,只能这样做:- if ($comtype==3) $getsteps = mysql_query("SELECT id FROM steps WHERE id = $id"); $row = mysql_fetch_array($getsteps); $countsteps = count($row); echo json_encode(array("comtype" =&gt; $comtype, "countsteps" =&gt; $countsteps, "steps" =&gt; $row)); 【参考方案1】:

问题是您在while 循环之前调用了mysql_fetch_array()。这会获取第一行,然后循环获取剩余的行。

如果您想测试循环前是否返回了任何行,请调用mysql_num_rows()。你也可以用这个代替count($steps_array)

if ($comtype==3)
    $getsteps = mysql_query("SELECT id FROM steps WHERE id = $id");

    $countsteps = mysql_num_rows($getsteps);
    if($countsteps > 0) 
        $steps_array = array();
        while ($row = mysql_fetch_array($getsteps, MYSQL_ASSOC)) 
        
            array_push($steps_array,$row);
        

        error_log("count: ".$countsteps);
        error_log(print_r($steps_array));

        echo json_encode(array("comtype" => $comtype, "countsteps" => $countsteps, "steps" => $steps_array)); 
     else 
        //error
    

【讨论】:

以上是关于从mysql表中获取行到php数组并将其传递给ajax的主要内容,如果未能解决你的问题,请参考以下文章

PHP从获取数组创建一个数组

Firestore:如何从数组中检索数据并将其传递到表中?

如何从表中获取数据并将其插入另一个表?

如何获取python的多处理数组'指针并将其传递给Cpp程序?

获取 Javascript 变量并将其传递给 PHP 函数 [重复]

如何从 mysql 表中选择 php 中的个人姓氏并将其放入 $_Session 变量中