【问题标题】:Php fetching and echoing in HTMLphp在HTML中获取和回显
【发布时间】:2018-08-25 05:29:17
【问题描述】:
<?php  
    include_once 'config.php';  

    $query = $config -> prepare("SELECT `edit`, `user_banned`, `ban_reason`, `ban_time`, `user_banner`, `ban_timestamp` FROM `samp_ban` ORDER BY `edit` ASC LIMIT 10");  
    if($query -> execute())  
    {  
        $query_results = $query->fetchAll();
         if($ban_time == 0) { $query_result["ban_time"] = "Permanent"; } 

    }  
?>

code edidetcode edidetcode edidetcode edidet

错误:未定义变量:ban_time

【问题讨论】:

  • 致命错误:无法使用 [] 读取
  • 在您获取的 while 循环中,使用所有周围的 HTML 标记回显一行 (&lt;div class="row"&gt;)

标签: php html mysql database


【解决方案1】:

您必须结合 html 和 php 从查询中获取所有数据

if($row_count)  
        {  
            while($query_result = $query -> fetch()){  
                 $Username = $query_result['Username']; 
                 $Headshots = $query_result['Headshots']; 
                 $ForumName = $query_result['ForumName'] ; 
                 ?>
                 <div class="row">
                            <div class="cell" data-title="Full Name">
                                <?php echo $Username ?>
                            </div>
                            <div class="cell" data-title="Headshots">
                                <?php echo $Headshots ?>
                            </div>
                            <div class="cell" data-title="Forum Title">
                                <?php echo $ForumName ?>
                            </div>
                        </div>
                 <?php
                }
        }

【讨论】:

  • 语法错误,意外 '
  • 编辑问题并输入您尝试过的内容以及出现错误的行
  • 完成@Vishnu Bhadoriya
  • 你没有关闭 php 标签?> 添加 ?> @ line 72
  • 感谢您的帮助和时间!
【解决方案2】:

问题是您试图在两行上输出相同的变量。结果,您得到两行具有相同结果的行。您必须将数据库中的行存储到数组中,然后创建一个 for 循环以使用该数组中的数据输出您的 html。

PHP 代码

<?php  
    include_once 'config.php';  

    $query = $config -> prepare("SELECT `Username`, `Headshots`, `ForumName` FROM `users` ORDER BY `Headshots` DESC LIMIT 10");  

    if($query -> execute())  
    {  
        $query_results = $query->fetchAll();
    }  
?>

HTML 代码

<div class="limiter">

    <div class="container-table100">
        <div class="wrap-table100">
            <div class="table">

                <div class="row header">
                    <div class="cell">
                        Nickname
                    </div>
                    <div class="cell">
                        Headshots
                    </div>
                    <div class="cell">
                        Forum Name
                    </div>
                </div>

                <?php foreach( $query_results as $query_result ) { ?>
                <div class="row">
                    <div class="cell" data-title="Full Name">
                        <?php echo $query_result["Username"]; ?>
                    </div>
                    <div class="cell" data-title="Headshots">
                        <?php echo $query_result["Headshots"]; ?>
                    </div>
                    <div class="cell" data-title="Forum Title">
                        <?php echo $query_result["ForumName"]; ?>
                    </div>
                </div>
                <?php } ?>

【讨论】:

  • 我有一个问题,我想补充。 if($Username == 0) { $ban_time = "是"; } else if($Username == 1) { $Username= "no"; }
  • @NewbieHTML,我还建议在将文本输出到 HTML 时始终考虑安全性。如果允许用户名包含 HTML 标记或 javascript 中使用的特殊字符,&lt;?php echo $query_result["Username"]; ?&gt; 是危险的。在这种情况下,我真的建议使用htmlspecialchars()&lt;?php echo htmlspecialchars($query_result["Username"]); ?&gt;。这样,如果例如用户名是 &lt;B&gt;ill,您将看到真实的用户名而不是粗体 ill
  • 嗯,谢谢,但它给了我一个错误。不能将 PDOStatement 类型的对象用作数组
  • 您可能使用了$query 变量而不是$query_result。在我建议的代码中,$query 是 PDOStatement,$query_results 是一个行数组(关联数组),$query_result 是一个包含行数据(用户名、头像、论坛名称)的关联数组。确保使用正确的变量:)
  • 如果您在更改代码时需要进一步帮助,您应该保留原始问题并提出新问题。目前您的问题是没有 $ban_time 变量。您应该将条件代码放在 for 循环中并使用 $query_result 变量。将&lt;?php if($query_result["ban_time"] == 0) { $query_result["ban_time"] = "Permanent"; } ?&gt; 放在&lt;?php foreach( $query_results as $query_result ) { ?&gt; 之后。 $query_result 仅在遍历 $query_results 数组的 for 循环中可用。
【解决方案3】:

你需要改变

<?php  
    include_once 'config.php';  

    $query = $config -> prepare("SELECT `Username`, `Headshots`, `ForumName` FROM `users` ORDER BY `Headshots` DESC LIMIT 10");  

    if($query -> execute())  
    {  
        $row_count = $query -> rowCount();  

        if($row_count)  
        {  
            while($query_result = $query -> fetch())  
                 $Username = $query_result['Username']; 
                 $Headshots = $query_result['Headshots']; 
                 $ForumName = $query_result['ForumName'] ; 
        }  
    }  
?>

进入

<?php  
    include_once 'config.php';  

    $query = $config -> prepare("SELECT `Username`, `Headshots`, `ForumName` FROM `users` ORDER BY `Headshots` DESC LIMIT 10");  

    if($query -> execute())  
    {  
        $row_count = $query -> rowCount();  

        if($row_count)  
        {  
            while($query_result = $query -> fetch()) 
            { 
                 $Username = $query_result['Username']; 
                 $Headshots = $query_result['Headshots']; 
                 $ForumName = $query_result['ForumName'] ; 
                 echo '<div class="row">';
                        echo '<div class="cell" data-title="Full Name">';
                             echo $Username;
                        echo '</div>';
                        echo '<div class="cell" data-title="Headshots">';
                            echo $Headshots;
                        echo '</div>';
                        echo '<div class="cell" data-title="Forum Title">';
                            echo $ForumName;
                        echo '</div>';
                     echo '</div>';
            }
        }  
    }  
?>

你忘记了 while 循环周围的 { }

【讨论】:

  • 哦,哈哈,是的。谢谢你。但现在它仍然只有一个问题,我需要回显 9 个用户的数据,我制作的方式仅适用于 1 个用户,在初始脚本中适用于所有 10 个用户,但它们只显示在 1 行中。
猜你喜欢
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 2013-08-27
  • 2011-05-01
  • 1970-01-01
  • 2021-04-12
相关资源
最近更新 更多