Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress查询formcraft表回显字段到屏幕_Php_Wordpress - Fatal编程技术网

Php Wordpress查询formcraft表回显字段到屏幕

Php Wordpress查询formcraft表回显字段到屏幕,php,wordpress,Php,Wordpress,第一次使用Wordpress。我希望从formcraft表中随机获得一行,这样我就可以在一个页面上发布一组注册中的抽签结果 我想从formcraft表中获取的内容如下存储在content列中,该列位于wp\u formcraft\u 3\u submissions表中: [ {\"label\":\"Name\",\"value\":\"Annette\",\"identifier\":\"field1\",\"type\":\"oneLineText\",\"page\":1,\"page_n

第一次使用
Wordpress
。我希望从
formcraft
表中随机获得一行,这样我就可以在一个页面上发布一组注册中的抽签结果

我想从
formcraft
表中获取的内容如下存储在
content
列中,该列位于
wp\u formcraft\u 3\u submissions
表中:

[
{\"label\":\"Name\",\"value\":\"Annette\",\"identifier\":\"field1\",\"type\":\"oneLineText\",\"page\":1,\"page_name\":\"Step 1\",\"width\":\"100%\",\"altLabel\":\"Name\"},
{\"label\":\"Company Name\",\"value\":\"My Co \",\"identifier\":\"field3\",\"type\":\"oneLineText\",\"page\":1,\"page_name\":\"Step 1\",\"width\":\"100%\",\"altLabel\":\"Company Name\"},
{\"label\":\"Email\",\"value\":\"annette@email.com\",\"identifier\":\"field6\",\"type\":\"email\",\"page\":1,\"page_name\":\"Step 1\",\"width\":\"100%\",\"altLabel\":\"Email\"}
]
我试图随机抽取一行,然后发布
名称
公司名称

我被卡住了,
wordpress
没有记录任何错误,尽管我已经打开了错误记录。我是通过一个
快捷码来实现这一点的。首先,我想回显屏幕上的内容,但最终只回显这三个字段

function wa_awards_winner() {

    global $wpdb;

    $sql = $wpdb->query("
    SELECT *
    FROM wp_formcraft_3_submissions
    ORDER BY RAND()
    LIMIT 1
    ");

    $result = $wpdb->get_results( $sql );

    if ( ! $result ) { return false; }

    $winner = json_encode($result[0]->content);

    echo $winner;

}

add_shortcode( 'get_wa_awards_winner', 'wa_awards_winner' );
直到我试图得到这些值,但它不起作用:

// NAME
echo '<h3 class="col">' . $winner[0][0] . '</h3>';

// COMPANY NAME
echo '<h3 class="col">' . $winner[1][0] . '</h3>';

// EMAIL
echo '<h3 class="col">' . $winner[2][0] . '</h3>';

这是由于以下建议:

$sql = "
    SELECT *
    FROM wp_formcraft_3_submissions
    ORDER BY RAND()
    LIMIT 1
";

$result = $wpdb->get_results( $sql );
然后,我尝试访问以下信息:

$winner = json_decode(stripslashes($result[0]->content),true);

echo var_dump($winner);

echo '<h3 style="color: white;">NAME: ' . $winner[0]["Name"] . '</h3>';
echo '<h3 style="color: white;">COMPANY: ' . $winner[1]["Company Name"] . '</h3>';
echo '<h3 style="color: white;">EMAIL: ' . $winner[2]["Email"] . '</h3>';
但我的变量返回为空:

NAME:
COMPANY NAME:
EMAIL:
首先,您需要进行“stripslashing”,并将给定的字符串转换为JSON数据。然后你需要解码,而不是编码

这是:

 $winner = json_decode(stripslashes($result[0]->content),true);
 echo $winner[0]["value"];
还有一件事$wpdb->query不能在get\u结果中使用。取下这些,改用这个

   $sql = "
    SELECT *
    FROM wp_formcraft_3_submissions
    ORDER BY RAND()
    LIMIT 1
    ";

   $result = $wpdb->get_results( $sql );

嗨@Elvin Haci,请看我的更新。谢谢你的建议。你确定你的SQL查询是正确的吗?f、 表名应该是wp_formcraft_3_submissions,但您编写了wp_formcraft_3_表单。如果这也没有帮助,尝试var_dump($result);看看它打印了什么。哦,复制粘贴错误,修复了我的问题。是的,表名是正确的。我可以使用
MySQLWorkbench
查看表中的一行;请告诉我打印的是什么。(在$result=$wpdb->get_results($sql);)之后,我注意到了另一个错误,这就是代码无法工作的原因。我已经更新了我的答案,检查iTunesdefined offset并尝试获取属性意味着您的
$result
变量不是您所期望的。为了便于调试,请将它移到您的快捷码之外,并使用
var_dump()
Man,我爱Laravel!这是一个全新的世界。如何将变量移出快捷码?对于您在WP下执行的所有未来任务,您可以通过以下方式轻松调试:1)在当前(活动)主题文件夹中创建一个文件,例如mytestpage.php 2)将此注释放在文件
模板名称:我的测试页面
(这是一个php注释,因此带有//或/**/)3)将您喜欢的任何代码放入该文件中,例如
echo'hello world'4)进入管理面板,创建新页面并选择模板我的测试页面5)访问pageHi@GMarco,谢谢。伟大的建议
NAME:
COMPANY NAME:
EMAIL:
 $winner = json_decode(stripslashes($result[0]->content),true);
 echo $winner[0]["value"];
   $sql = "
    SELECT *
    FROM wp_formcraft_3_submissions
    ORDER BY RAND()
    LIMIT 1
    ";

   $result = $wpdb->get_results( $sql );