使用 $wpdb 类选择 MySQL 视图

Posted

技术标签:

【中文标题】使用 $wpdb 类选择 MySQL 视图【英文标题】:Selecting MySQL views using $wpdb class 【发布时间】:2015-11-13 02:57:56 【问题描述】:

我正在构建一个 Wordpress 站点,它已连接到 mysql 数据库。我正在使用 wordpress 类 wpdb (https://codex.wordpress.org/Class_Reference/wpdb) 与数据库进行交互。使用该类,我可以查询我的数据库的表,但不能查询视图。

我需要能够选择我的数据库的视图。这是 wpdb 所不允许的,还是我的代码错了?有没有办法像使用 wpdb 查询表一样查询视图?

我尝试过使用查询功能,以及以与处理表相同的方式处理视图,但它不起作用。它返回空。

查询方法:

$test = $mydb->query( 
$mydb->prepare( 
"
         SELECT name FROM $mydb->$view_name
 WHERE id = 1"
 )
);

echo $test; //returns empty; should return a name

表法:

$test = $mydb->get_var(
"select name from $view_name WHERE id = 1"
);

echo $test; //returns empty; should return a name

有什么建议吗?我是否可以使用 $wpdb 以外的方式连接到我的数据库(Wordpress 允许吗?)。

【问题讨论】:

name 似乎是 MySQL (reference) 中的保留字。尝试像这样用反引号(`)包围它。您应该看到一些错误,您是否留意日志?此外,当您对查询有疑问时,您可以简单地复制原始查询并将其执行到 phpMyAdmin 或您用来手动访问数据库的任何工具中。 啊!你解决了我的问题!您可能对保留的“名称”是正确的,但我发现的另一个问题是我的视图被命名为导致错误的东西!我尝试在 phpMyAdmin 中选择我的视图,这是(第一个)问题。 (对于后代,我的观点被称为“broccoli-and-roots-1price”,这导致了错误)。谢谢! @Avalanche 你解决了我的问题,所以如果你愿意,如果你发布答案,我可以奖励你接受的答案! 嗯,谢谢,非常感谢您 【参考方案1】:

name 似乎是 MySQL 中的保留字 (reference)。尝试用反引号 (`) 将其包围,如下所示:

SELECT `name` FROM ...

您应该看到一些错误,您是否留意日志?此外,当您对查询有疑问时,您可以简单地复制原始查询并将其执行到 phpMyAdmin 或您用来手动访问数据库的任何工具中

【讨论】:

当然是反引号!我需要记住使用反引号以避免将来出现错误!

以上是关于使用 $wpdb 类选择 MySQL 视图的主要内容,如果未能解决你的问题,请参考以下文章

wordpress 常用函数-wpdb类

Wordpress - $wpdb->插入 - MySQL NOW()

选择器的基本规则及使用

选择器的基本规则及使用

哪个是 wordpress 插件最好的 mysql 或 mysqli 或 $wpdb

$wpdb->插入不工作。没有错误信息