我如何才能检测到正确的数据库类型?

时间:2017-07-08 作者:Stanislav Belichenko

我编写插件并在代码中使用此函数:mysqli_multi_query($wpdb->dbh, $sql_trigger);. 不难猜测,在某些托管系统上,此功能工作正常,但在某些托管系统上,它会产生以下错误:

警告:mysqli\\u multi\\u query()要求参数1为mysqli,即/home/blah/blah中给定的资源。com/www/wp-content/plugins/blah/blah。php在线xxx

Question: 如何确定主机上使用的数据库类型,然后正确执行对数据库的查询?

Notice: 我对数据库的查询包含以下代码:

CREATE TRIGGER `blah_set_current_time_and_date_values`
BEFORE INSERT
ON $table_name
    FOR EACH ROW BEGIN
        SET NEW.date_visited = DATE_FORMAT(NOW(), \'%d-%m-&Y\');
        SET NEW.time_visited = TIME_FORMAT(NOW(), \'%H:%i:%s\');
END;
That\'s 为什么我决定使用mysqli_multi_query(), 因为我不知道如何执行这个查询。还有,我试过使用$wpdb->query($sql_string);, 但在这种情况下,WP返回错误:[Trigger already exists]. 虽然它当时并不存在,但我使用DROP TRIGGER IF EXISTS wordpress_rezart_statistics_set_current_time_and_date_values‌​.

1 个回复
SO网友:Rarst

wpdb->dbh 声明为受保护的属性,您甚至不应该访问它,除非您正在子类化wpdb?

唯一的公共属性是wpdb->is_mysql 这只是硬编码的true 用于检测非本机数据库拖放。

所以总体来说wpdb 上下文应该是内部的,您可以设置连接并让它从该点处理细节。

我没有在WP上下文中使用触发器的经验,但不只是在WP上下文中使用任意查询听起来很奇怪query() 方法我建议你把事情弄清楚。问题可能是查询或相关的东西,而不是运行它的WP调用。

结束

相关推荐

请解释WordPress如何在较低级别使用MySQL字符集和归类

正如问题标题所示,我想了解Wordpress是如何使用MySQL字符集和排序选项的。正如我将在下面展示的,事情对我来说没有多大意义。。。我按照Wordpress安装页面上的说明安装了Wordpress:https://codex.wordpress.org/Installing_WordPress作为说明的一部分,我按照他们的建议在命令行上手动创建MySQL数据库,即以下命令:mysql> CREATE DATABASE databasename; Query OK, 1 row affec