【问题标题】:Displaying fields in a unique php page for each row in myql Wordpress Database在 mysql Wordpress 数据库中的每一行的唯一 php 页面中显示字段
【发布时间】:2017-03-27 23:04:00
【问题描述】:

我的 Wordpress 数据库中有一个名为“races”的表。

ma​​in.php 我的活动页面在“比赛”表中显示了我的所有比赛——这里一切正常

<?php
global $wpdb;
$table_name = $wpdb->prefix . "races";
$result = $wpdb->get_results ( "SELECT * FROM races ORDER BY date_start LIMIT 4" );?>
<div class="events-schedule">
<?php
foreach ( $result as $race )   {

    $title = $race->title;
    $raceid = $race->race_id;
    $location = $race->venue;
    $icon = $race->race_icon;
   ?>

    <div class="wrapper">
        <div class="row">
            <div class="small-12 medium-4 columns event-icon text-center">
                    <img src="<?php echo $icon; ?>">
            </div>
            <div class="small-12 medium-8 columns text-center">
                <?php echo $id; ?>
                    <h3 class="tagline location"><?php echo $location; ?> </h3>
                    <h2><?php echo $title; ?></h2>

                    <div><a class="btn yellow" href="/test/?id=<?php echo $id; ?>">Apply Now</a></div>
                </div>
            </div>

        <?php
    echo '</div>';

 }  ?>
 </div> <?php
?>

test.php 当您转到 http://mywebsite.com/test/?id=64 时,我正在尝试在此单独页面上显示其他字段 我得到的只是数字“64”,这很好,因为那是正确的 ID! 我正在尝试检索其他字段,例如标题、地点等,但无法正常工作。我错过了什么吗?

提前谢谢你。

<?php
$id = $_GET['id']; 

echo $id;

 $result = $wpdb->get_results ( "SELECT * FROM races WHERE id='$id'" );

foreach ($result as $race) {

$title = $race->title;
   echo $title;
}
?>

【问题讨论】:

    标签: php mysql database wordpress


    【解决方案1】:

    你可能没有得到任何结果,所以 for 循环永远不会执行。您确定 id 64 确实存在吗?

    另外,将 URL 中的变量直接放入查询中也是一种糟糕的做法。我可以像将 SQL 附加到 URL 一样轻松地将 SQL 注入您的系统。您需要净化您的输入以保护自己免受攻击。

    在查看您的 db 架构后,看起来 id 字段实际上名为 race_id。所以你的查询应该是这样的: $wpdb-&gt;get_results ( "SELECT * FROM races WHERE race_id='$id'" );

    【讨论】:

    • 谢谢,我该怎么做?
    • 我在 main.php 页面以及其他字段上得到了结果。
    • 你必须绑定变量。在此处查看他们使用的语法:developer.wordpress.org/reference/classes/wpdb/prepare
    • 好的,我遇到的实际问题是如何在单个 test.php 页面上显示值?
    • 看起来我所要做的就是将 WHERE id='$id' 更改为 WHERE race_id='$id' 现在它可以工作了。非常感谢您的帮助!
    【解决方案2】:

    首先从 id 中删除单引号并像这样进行查询

    $wpdb->get_results ( "SELECT * FROM races WHERE race_id=$id" );
    

    为了显示所有字段,请执行此操作

    foreach($result as $race){
      echo $title = $race->title;
      echo $field_1= $race->field_1;
      echo $field_2= $race->field_2;
      echo $field_3= $race->field_3;
    }
    

    注意:: 把你的字段放在 field_1,field_2,field_3 的位置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      相关资源
      最近更新 更多