Php 显示与WP post id匹配的db表行

Php 显示与WP post id匹配的db表行,php,html,mysql,wordpress,Php,Html,Mysql,Wordpress,需要一些指导。我在Wordpress中建立了一个排球俱乐部网站,我们征求了球员档案数据,我在谷歌表单/电子表格中捕获这些数据,保存为.csv,然后导入一个名为“档案”的自定义表格 我正在尝试向播放器模板文件添加代码,以便根据WP post-id的匹配在html表中显示数据 我确定了所有的播放器页面帖子id,并将它们包含在名为“post_id”的表的第一列中,并将其设置为Primary。目标是,例如,如果您打开一个postid为1566的玩家页面,那么应该显示profiles表中post_id为1

需要一些指导。我在Wordpress中建立了一个排球俱乐部网站,我们征求了球员档案数据,我在谷歌表单/电子表格中捕获这些数据,保存为.csv,然后导入一个名为“档案”的自定义表格

我正在尝试向播放器模板文件添加代码,以便根据WP post-id的匹配在html表中显示数据

我确定了所有的播放器页面帖子id,并将它们包含在名为“post_id”的表的第一列中,并将其设置为Primary。目标是,例如,如果您打开一个postid为1566的玩家页面,那么应该显示profiles表中post_id为1566的行

由于SELECT*查询,我现在得到的是每个人的个人资料数据。我正在尝试将查询的语法更改为DISTINCT,以便它在配置文件表中查找与您所在的播放机页面具有相同post id号的特定行

<?php
  global $wpdb;
//  $result = $wpdb->get_results( $wpdb->prepare ( "SELECT DISTINCT $wpdb->posts.ID FROM $wpdb->profiles" ) );
    $result = $wpdb->get_results( $wpdb->prepare ( "SELECT * FROM profiles" ) );

    foreach ( $result as $print )   {

      echo '<h6>Playing Experience </h6><p>' . $print->PlayingExperience.'</p>';
      echo '<h6>Previous Clubs </h6><p>' . $print->PreviousClubs.'</p>';
      echo '<h6>Athletic Awards & Accolades</h6><p>' . $print->AwardsAccolades.'</p>';
      echo '<h6>Fondest Volleyball Memory</h6><p>' . $print->FondestMemory.'</p>';
      echo '<h6>Best Finish</h6><p>' . $print->BestFinish.'</p>';
      echo '<h6>Online Video</h6><p>' . $print->OnlineVideo.'</p>';

      echo '<h3>Profile Details</h3>';

//      echo '[content_protector password="xxxxxxx" cookie_expires="0" identifier="xxx"]';
//      echo '[content_protector password=&quot;xxxxxxx&quot; cookie_expires=&quot;0&quot; identifier=&quot;xxx&quot;]';

// In case there is opening and closing shortcode.
//      echo do_shortcode( '[content_protector password="xxxxxxx" cookie_expires="0" identifier="xxx"] Private Info  [/content_protector]' );
      echo do_shortcode( '[content_protector password="xxxxxxx" cookie_expires="0" identifier="xxx"]' );
      echo '<h2>' . $print->FirstName.' ' . $print->LastName.' </h2>';
      echo '<table class="profile center">';
      echo '<tr><td>Team </td><td>' . $print->Team.'</td></tr>';
      echo '<tr><td>First Name </td><td>' . $print->FirstName.'</td></tr>';
      echo '<tr><td>Nickname </td><td>' . $print->Nickname.'</td></tr>';
      echo '<tr><td>Middle Name </td><td>' . $print->MiddleName.'</td></tr>';
      echo '<tr><td>Last Name </td><td>' . $print->LastName.'</td></tr>';
      echo '<tr><td>Height </td><td>' . $print->Height.'</td></tr>';
      echo '<tr><td>Position </td><td>' . $print->Position.'</td></tr>';
      echo '<tr><td>Birthday </td><td>' . $print->Birthday.'</td></tr>';
      echo '<tr><td>School </td><td>' . $print->School.'</td></tr>';
      echo '<tr><td>Grade </td><td>' . $print->Grade.'</td></tr>';
      echo '<tr><td>Class </td><td>' . $print->Class.'</td></tr>';
      echo '<tr><td>Commitment </td><td>' . $print->Commitment.'</td></tr>';
      echo '<tr><td>Standing Reach </td><td>' . $print->Reach.'</td></tr>';
      echo '<tr><td>Block Touch </td><td>' . $print->Block.'</td></tr>';
      echo '<tr><td>Approach Jump </td><td>' . $print->Approach.'</td></tr>';
      echo '<tr><td>GPA (Unweighted) </td><td>' . $print->GPA_Unweighted.'</td></tr>';
      echo '<tr><td>GPA (Weighted) </td><td>' . $print->GPA_Weighted.'</td></tr>';
      echo '<tr><td>Class Rank </td><td>' . $print->ClassRank.'</td></tr>';
      echo '<tr><td>ACT Scores </td><td>' . $print->ACT_Score.'</td></tr>';
      echo '<tr><td>SAT Scores </td><td>' . $print->SAT_Score.'</td></tr>';
      echo '<tr><td>Parents / Guardians </td><td>' . $print->Parents.'</td></tr>';
      echo '<tr><td>Parent 1 Email </td><td>' . $print->ParentEmail1.'</td></tr>';
      echo '<tr><td>Parent 2 Email </td><td>' . $print->ParentEmail2.'</td></tr>';
      echo '<tr><td>Address </td><td>' . $print->Address.'</td></tr>';
      echo '<tr><td>City, State, Zip </td><td>' . $print->City.', ' . $print->State.', ' . $print->Zip.'</td></tr>';
      echo '<tr><td>Your Cell # </td><td>' . $print->YourCell.'</td></tr>';
      echo '<tr><td>Parent 1 Cell # </td><td>' . $print->ParentCell1.'</td></tr>';
      echo '<tr><td>Parent 2 Cell # </td><td>' . $print->ParentCell2.'</td></tr>';
      echo '<tr><td>Home Phone </td><td>' . $print->HomePhone.'</td></tr>';
      echo '<tr><td>Interest in Beach Volleyball? </td><td>' . $print->BeachInterest.'</td></tr>';
      echo '<tr><td>Beach Volleyball experience? </td><td>' . $print->BeachExperience.'</td></tr>';
      echo '<tr><td>Next ACT/SAT date </td><td>' . $print->NextACTSATdate.'</td></tr>';
      echo '<tr><td>Favorite Subjects </td><td>' . $print->FavoriteSubjects.'</td></tr>';
      echo '<tr><td>Desired Area of Study </td><td>' . $print->DesiredMajor.'</td></tr>';
      echo '<tr><td>Desired Level of Play </td><td>' . $print->DesiredPlayingLevel.'</td></tr>';
      echo '<tr><td>State of College Preference </td><td>' . $print->CollegePreference.'</td></tr>';
      echo '<tr><td>Size of School </td><td>' . $print->SchoolSize.'</td></tr>';
      echo '<tr><td>Contacting schools? </td><td>' . $print->ContactingSchools.'</td></tr>';
      echo '</table>';
//      echo '[/content_protector]';
      echo do_shortcode( '[/content_protector]' );

  }
?>
执行“content_protector”短代码的结束标记时也有问题。我可以从do_短代码开始,但过去的所有内容都需要放在[/content_protector]中,将该行的最后一半添加到底部是不起作用的。有什么建议吗?是否有可能在短代码之间嵌套所有内容


非常感谢您的建议

Select DISTINCT对我来说没有意义。在profiles表中,每个条目/行都是唯一的,对吗?每排一名球员?将只返回一次任何重复值

我想你想要这样的东西

$print = $wpdb->get_row( $wpdb->prepare ( "SELECT * FROM $wpdb->profiles 
                                            WHERE post_id = %s," $postid) );
跳过使用$result并循环遍历每个结果。get_行的每个结果都应该包含整行玩家数据。相反,使用每个玩家的ID循环遍历他们,并查询整行

foreach ($postids as $postid){

    $print = $wpdb->get_row( $wpdb->prepare ( "SELECT * FROM $wpdb->profiles 
                                               WHERE post_id = %s," $postid) );
    // echo all those print lines
}
明白了!这很有效

$postid = get_the_ID(); 
$result = $wpdb->get_results( $wpdb->prepare ( "SELECT * FROM profiles 
                                               WHERE post_id = $postid" ) ); 
foreach ( $result as $print ) {

和在打开/关闭标签中间有大量代码的短代码技巧是:

$the_content = '<h2>' . $print->FirstName.' ' . $print->LastName.' </h2>';
$the_content .= '<table class="profile center">';
$the_content .= '<tr><td>Team </td><td>' . $print->Team.'</td></tr>';
$the_content .= '<tr><td>First Name </td><td>' . $print->FirstName.'</td></tr>';
$the_content .= '<tr><td>Nickname </td><td>' . $print->Nickname.'</td></tr>';
$the_content .= '<tr><td>Middle Name </td><td>' . $print->MiddleName.'</td></tr>';
$the_content .= '<tr><td>Last Name </td><td>' . $print->LastName.'</td></tr>';
...
$the_content .= '/<table>';
echo do_shortcode( '[content_protector password="xxxxxxx" cookie_expires="0" identifier="xxx"]' . $the_content . '[/content_protector]' );
$the_content=''$打印->名字。“”$打印->姓氏。“;
$u内容='';
$U内容=团队$打印->团队。“;
$the_content.='First Name'$打印->名字。“;
$the_content.=“昵称”$打印->昵称。“;
$the_content.=“中间名”$打印->中间名。“;
$the_content.=“姓氏”$打印->姓氏。“;
...
$the_content.='/';
echo do_短码(“[content_-protector password=“xxxxxxx”cookie\u expires=“0”identifier=“xxx”]”.$内容“[/content_-protector]”);

谢谢你们帮我找到解决方案。你太棒了

当您通过post id限制结果时,为什么需要DISTINCT?post id在配置文件表中是否不唯一?换句话说,
SELECT*FROM profiles,其中post_id=$postid
返回多条记录吗?只是尝试了一些不同的方法。是的,帖子id是唯一的。。。每个玩家只有一排。页面仍使用此选项呈现,但不返回任何内容。谢谢@德夫林,你是对的。。。我只需要添加$postid=get_the_ID();到顶端,它的工作!呜呜!现在我只需要让结束内容保护器的短代码工作,这样我就可以通过密码隐藏这些个人数据。有什么想法吗?我正在考虑的这种方法是假设你以某种方式为你想要显示数据的玩家获得$postid(s)。POSTID是否会在您以前拥有的阵列中?或者在每次页面加载时,是否使用要显示的播放器的ID填充
$postid
变量?是的,每个条目/行都是唯一的,每行一个播放器。这些建议不会呈现页面,只是一个白色屏幕。不过看起来应该能用。我不确定你的问题,但我倾向于后者。我是一名设计师/网站管理员,只是想让这项工作顺利进行,所以请原谅我的无知。如果有帮助,我可以将列的名称从post_id更改为其他名称。谢谢你的建议!检查错误日志以查看PHP错误说明。如果需要,可以在wp-config.php中设置以显示如下错误<代码>ini\U集合(“显示错误”,1);错误报告(E|u ALL | E|u STRICT)
$wpdb->prepare(“从$wpdb->profiles中选择*,其中post\u id=%s,$postid)
是您要查找的内容。这将返回特定行的每一列,其中$postid等于玩家的post_id。这样,您可以->查找姓氏、中间名、学校等。。问题是,你从哪里获得身份证?每个页面是否只显示一名玩家?又称作你可以通过wordpress方法获取玩家的ID。
get\u ID()
说。。。分析错误:语法错误,意外的“$postid”(T_变量)。是的,这正是我们需要做的。是的,每个页面显示一个播放器。我读了一些关于get_the_ID()的文章,但不知道如何实现它。
$the_content = '<h2>' . $print->FirstName.' ' . $print->LastName.' </h2>';
$the_content .= '<table class="profile center">';
$the_content .= '<tr><td>Team </td><td>' . $print->Team.'</td></tr>';
$the_content .= '<tr><td>First Name </td><td>' . $print->FirstName.'</td></tr>';
$the_content .= '<tr><td>Nickname </td><td>' . $print->Nickname.'</td></tr>';
$the_content .= '<tr><td>Middle Name </td><td>' . $print->MiddleName.'</td></tr>';
$the_content .= '<tr><td>Last Name </td><td>' . $print->LastName.'</td></tr>';
...
$the_content .= '/<table>';
echo do_shortcode( '[content_protector password="xxxxxxx" cookie_expires="0" identifier="xxx"]' . $the_content . '[/content_protector]' );