无法在php中使用存储过程填充select

dy1byipe  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(352)
require_once "Constants.php";
require_once "database.php";
require_once "fun_class.php";
$fun_class = new fun_class();
$database = new database();
$myConnection = $database->connect_database(SERVER,USER,PASSWORD,DATABASE);

我把这个放在页面的顶部(页眉区域-这是因为我正在进行会话),然后在应该填充的地方有第二个php打开和关闭选项卡:

<select>
    <?php
    $fun_class->fillDropDownCategory($myConnection);
    ?>          
</select>

在我的fun\u class.php中,我有一个函数:

function fillDropDownCategory($mysqli) {
        echo " 1 ";
        $display_block = "";

        //Call Stored Procedure 
        if ($result = $mysqli->query("call rb_selectCategory()")) {         
        echo " 2 ";
        //  If there are no contacts returned
            if ($result->num_rows < 1) {
            //no records
                echo " 3 ";
                $display_block .= "<p><em>Sorry, no records to select!</em>
                </p>";
            } else {   

                echo " 4 ";
            //  For each record returned populate the select list
                while ($recs = $result->fetch_object()) {
                    $id = $recs['category_id'];
                    $display_name = stripslashes($recs['name']);

                    $display_block .= "<option value=\'" . $id . "\'>" . 
                    $display_name . "</option>";
                }
            }
            //free result
            $result->free();            
            //Get the last id entered - needed for the other tables
            echo " 5 ";     
            //So you can run another stored proedure after a select
            $mysqli->next_result();
        }
        else
        {
        echo " 6 ";
        $display_block .= "<p><em>Sorry, no records to select!</em></p>";
    }
        echo " 7 ";
        return($display_block);
    }

当我进入页面时,select是空的,当我输入站点的源代码时,我可以看到:

<select>
            1  6  7         
           </select>

这是我调试回音的输出
我的存储过程是:

BEGIN
SELECT category_id, name AS name

FROM xxx.category

ORDER BY name;

END

当执行时(在phpmyadmin中),它返回两个表,一个名为category\u id,带有id,另一个名为name,它有分配给id的类别名称。
我对php很陌生,我的函数可能有问题,但由于缺乏经验,我找不到错误。

hm2xizp9

hm2xizp91#

因为需要在html中打印这些字符串,所以需要使用如下函数 echo . 在你的 fillDropDownCategory() 你在呼应什么(例如。 echo " 1 "; )但最后你会返回一个变量。
这个变量不会因为返回就被打印出来,所以您需要通过

<select>
    <?php
    echo $fun_class->fillDropDownCategory($myConnection);
    ?>          
</select>

当然,你也需要去掉你的头发 echo 来电 fillDropDownCategory() 以避免在html中打印一些不需要的字符串。

k3bvogb1

k3bvogb12#

我有

$id = $recs['category_id'];
$display_name = stripslashes($recs['name']);

改成

$id = $recs->category_id;
$display_name = stripslashes($recs->name);

谢谢大家的努力!

相关问题