在 WP Shortcode 中显示来自 mySQL 的数据字段
Posted
技术标签:
【中文标题】在 WP Shortcode 中显示来自 mySQL 的数据字段【英文标题】:Displaying Datafield from mySQL in WP Shortcode 【发布时间】:2020-06-07 01:46:55 【问题描述】:我正在尝试使用新表中的简码在 WP 前端显示字段数据。
See Table
在遇到许多来源和研究之后,我似乎没有找到一种简单的方法来显示文本(而不是表格)中的数据,这些数据包含在 SQL 查询中通过 SELECT FROM WHERE 选择的特定字段中。
到目前为止,我调用了 wpdb,选择了字段,创建了一个循环并回显。但没有显示结果。 我也尝试过使用 print_r 和 implode,但都失败了。
<?php
function Initial_Brief() global $wpdb;
$results = $wpdb->prepare( "SELECT 'Initial_Brief'* FROM `Portal_100` WHERE Project_Title = 'Project 1'");
foreach ($results as $result)
echo $result['results'];
add_shortcode('Initial_Brief','Initial_Brief')
?>
非常感谢,
分享这个我觉得非常强大的逻辑是使用简码来显示网站上的所有文本,通过创建一个更新特定字段的 html 表单从前端启用文本编辑。我将创建一个编辑图标,在悬停到编辑角色时显示,单击以触发带有 html 表单的弹出窗口,该表单调用函数来更新数据库中的特定字段。
【问题讨论】:
【参考方案1】:您无法像这样调用get_results 方法:
<?php
global $wpdb;
$id = 23;
$sql = $wpdb->prepare( "SELECT * FROM tablename WHERE id= %d",$id);
$results = $wpdb->get_results( $sql , ARRAY_A );
?>
prepare 方法的使用是为安全执行准备 SQL 查询(例如抢占 SQL 注入)的好习惯,但它还没有执行,它返回一个经过清理的查询字符串,如果有查询准备。 它也是query 方法的好伴侣。
【讨论】:
您好,感谢您的回答,但我认为这不是主要问题,我使用的是 get_results 但它仍然没有回显表中的数据。我现在开发了以下内容: prepare("SELECT 'Initial_Brief'* FROMPortal_100
WHERE Project_Title = Project 1"); $results = $wpdb->get_results( $sql , ARRAY_A );回声''; foreach ($results as $result) $display = implode(", ", $result);回声$显示; 回声'
'; add_shortcode('Initial_Brief','Initial_Brief') ?> 还是不行... 当你写SELECT 'Initial_Brief'* FROM
...你以前用过这个语法吗?我不习惯在那个位置使用这个星号 (*)。也许中间缺少一个点?喜欢'Initial_Brief'.*
?
感谢您的回复。似乎 mysql 不接受 WHERE 输入中的句子。因此,不能为地址设置 where 值。 (例如)。换句话说,我理解并且可能是错误的,我们只能使用预分配的唯一键或主键选择特定字段?【参考方案2】:
经过几次迭代,我终于让它工作了!
我了解 mySQL 不接受带空格的输入? 如何为多个单词或一个段落插入 WHERE 条件?
使用以下脚本对我有用,但我必须将 WHERE 值更改为整数。
<?php
add_shortcode('Initial_Brief', function()
global $wpdb;
$sql = $wpdb->prepare("Select Value from `P100` WHERE `P100`.`id` = 1 ");
$results = $wpdb->get_results( $sql , ARRAY_A );
foreach ($results as $result)
$display = implode(", ", $result);
echo $display;
);?>
【讨论】:
以上是关于在 WP Shortcode 中显示来自 mySQL 的数据字段的主要内容,如果未能解决你的问题,请参考以下文章