在myql Wordpress数据库的每一行的唯一php页面中显示字段

时间:2017-03-27 23:04:00

标签: php mysql database wordpress

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

enter image description here

main.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;
}
?>

2 个答案:

答案 0 :(得分:1)

您可能无法获得任何结果,因此for循环永远不会执行。你确定id 64确实存在吗?

将URL中的变量直接放入查询中也是一种可怕的做法。我可以像将SQL附加到URL一样轻松地将SQL注入您的系统。您需要清理输入以保护自己免受攻击者的攻击。<​​/ p>

看到你的数据库模式后,看起来id字段实际上名为race_id。所以你的查询应该是这样的: $wpdb->get_results ( "SELECT * FROM races WHERE race_id='$id'" );

答案 1 :(得分:-1)

首先从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