Mysql 结果集不返回变量

问题描述 投票:0回答:1

我一直用这个把头撞在墙上。

我几年前写了这个 CMS,它已经被存储起来了,所以它可能是在 PHP 5.6 的时候。

我现在重新设置了这个 CMS,正如您可以想象的那样,它并不像您期望的那样无缝。我不得不使用 Fix-mysql-mysqli include 来阻止数据库错误。

我现在遇到的问题是从查询返回结果集(我认为我可以看到它正在工作),我使用循环为列名创建变量,以允许我在结果列表中回显它们,然后使用数据以打开编辑窗口。

例如,它使用数组的各个部分来创建 $Variables id,title,first_name = $id, $title,$first_name

代码:

        mysql_select_db($database,$con);

                    $rs=mysql_query($query);

                    $pieces = explode(",", $data);

                    $count= count($pieces);

                    

                    while ($row=mysql_fetch_assoc($rs))
                

                    {

                                        //*************GET DATA FIELDS**************

                    $counter=0;

                    while ($counter <$count)

                    {

                    $pieces[$counter] = stripslashes($row[$pieces[$counter]]);

                    $counter++;
            

                    }       

                    





                    echo'

                    <div class="shadow" style="width: 920px; margin:auto; display: block;" >

                    <div class="middle_cell" style="width: 15px;">';

                    

                    //*********************************************************    DISPLAY ICON FOR CUSTOMER STATUS     *********************************************************

                    if ($status ==100){ echo '<img src="../../images/icons/warning_red_16.png" width="12" height="12" />';}

                    if ($status >100){ echo '<img src="../../images/icons/warning_16.png" width="12" height="12" />';} echo '&nbsp;</div>

                    <a href="'.$full_path.'edit.php?mode=view,'.$id.'&returnpath=modules/customers/home.php" >

                    <div class="middle_cell" style="width: 200px; ">';

                    echo $title." ".$first_name." ".$last_name.'&nbsp;</div>

                    <div class="middle_cell" style="width: 100px; ">'.$phone.'&nbsp;</div>

                    <div class="middle_cell" style="width: 170px; ">'.$address_1.'&nbsp;</div>

                    <div class="middle_cell" style="width: 75px;  ">'.$postcode.'&nbsp;</div>

                    <div class="middle_cell" style="width: 125px; ">'.$phone.'&nbsp;</div>

                    <div class="middle_cell" style="width: 125px; ">'.$mob.'&nbsp;</div>

                    <div class="clear"> </div>

                    </div></a>';

                    

            

}

 ?>

虽然我可以单独将每一列指定为变量,但这会产生整个重写,并且这确实有效。

任何帮助都会非常感谢

亚历克斯

php mysql mysqli
1个回答
0
投票

mysql_fetch_assoc

返回与所获取的行相对应的字符串关联数组,如果没有更多行,则返回 false

文档提供了这个示例

while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}

因此,如果您事先知道数组键,则可以将它们用作关联数组的索引并直接获取它们的值。因此,如果您事先不知道键,那么您可以从关联数组中推断出它们。这是使用

foreach
循环实现此目的的方法:

foreach($row as $key => $value) {
    //$key is the column name, like userid
    //$value is the corresponding value
    echo $key . ": " . $value . "<br>";
}

当然,这里我们假设您的查询是正确的,您的连接是正确的等等。在您的示例中,您需要调试并查看第一次调用时的

mysql_fetch_assoc($rs)
是否确实包含有效结果。如果没有,请尝试直接针对数据库运行查询并检查 PHP 代码使用的连接。您可能有一个未版本化的 env 文件,但现在没有。

© www.soinside.com 2019 - 2024. All rights reserved.