使用$wpdb会生成数据库错误

时间:2017-03-21 作者:Fl-0

我正在尝试显示SQL表中的内容,使用$wpdb 对象问题是,无论我在查询中尝试使用它,它都会打印一个SQL错误。我试图做的事情比我将向您展示的要复杂一些,但我逐步简化了查询,以查看错误可能来自何处,但从未找到。

下面是我上次尝试的内容:

<?php

global $wpdb;
$wpdb->show_errors();
$tableCustom = \'join_users_defis\';

$requeteAffichage = $wpdb->get_results(\'
SELECT * 
FROM $wpdb->postmeta
\');

var_dump($requeteAffichage);

?>
对我来说,它应该转储表中的内容{$table_prefix}_postmeta (我尝试了其他表),这是一个标准的WordPress表。但是,它会输出以下错误(由于$wpdb->show_errors();):

WordPress数据库错误:[您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以获取可在附近使用的正确语法->_posts 第2行]

我当前的安装在本地运行(XAMPP), 具有MariaDB 10.1.16 / Apache / PHP 5.6.24

当然,我尝试直接用WordPress安装前缀进行查询,结果成功了。

这是我的安装有问题,还是我遗漏了什么?我需要一些帮助。

3 个回复
最合适的回答,由SO网友:Anwer AR 整理而成

根据错误消息,这是一个语法错误。下面的步骤可能适合您。

global $wpdb;
$wpdb->show_errors();
$tableCustom = \'join_users_defis\';

$sql = "SELECT * FROM {$wpdb->postmeta}";
$requeteAffichage = $wpdb->get_row( $sql );

//or $requeteAffichage = $wpdb->get_results( $sql );

var_dump($requeteAffichage);

SO网友:Yoav Kadosh

PHP需要使用双引号字符串文字来正确解释字符串中的变量。更改:

$wpdb->get_results(\'SELECT * FROM $wpdb->postmeta\');
收件人:

$wpdb->get_results("SELECT * FROM {$wpdb->postmeta}");

SO网友:WebElaine

$wpdb-> 不属于查询。

改变

$requeteAffichage = $wpdb->get_results("
SELECT * 
FROM $wpdb->postmeta
");

$prefix = $wpdb->prefix;
$postmeta = $prefix . \'postmeta\';
$requeteAffichage = $wpdb->get_results("
SELECT * 
FROM $postmeta
");
(或者,如果您使用的是不同的表前缀,请将该前缀替换为wp\\uU。)