在 WordPress 中运行 MySQL 查询会导致 HTML 标记消失?

发布于 2024-11-10 16:31:40 字数 535 浏览 0 评论 0原文

我们在向页面添加 MySQL 查询时遇到问题。似乎每当在页面顶部运行某些内容时,要遵循的其余标记和 php 函数都不会显示/未运行。

这是导致此问题的示例查询:

global $wpdb;

$add_query = "CREATE TABLE thetesttable
        (
           id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
           product VARCHAR(50)
        )";

$wpdb->query($add_query) or die(mysql_error());

加载页面一次会导致空白页。

第二次,我们看到表“thetesttable”已经存在,这意味着我们的查询正在通过。

页面上没有其他错误,Google Chrome 也没有检测到任何其他内容。

什么可能导致这个问题?

非常感谢,

贾斯蒂安·迈耶

We're having an issue adding MySQL queries to our page. It seems that whenever something is run at the top of the page, the rest of the markup and php functions to follow don't show up/aren't run.

Here's a sample query that causes this issue:

global $wpdb;

$add_query = "CREATE TABLE thetesttable
        (
           id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
           product VARCHAR(50)
        )";

$wpdb->query($add_query) or die(mysql_error());

Loading the page once results in a blank page.

The second time, we see Table 'thetesttable' already exists, which means that our queries are getting through.

There are no other errors on the page or anything else detected by Google Chrome.

What could be causing this problem?

Many thanks,

Justian Meyer

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

装纯掩盖桑 2024-11-17 16:31:40

问题是您的查询返回 0,这在您的语句中被解释为 false:

$wpdb->query($add_query) or die(mysql_error());

来自 wpdb< /code> 类参考

函数返回一个整数
对应行数
受影响/选择。如果有MySQL
错误,函数将返回 FALSE。
(注意:因为 0 和 FALSE 都可以
返回,请确保您使用
正确的比较运算符:相等
== 与相同性 ===)。

您应该做的是这样的:

$result = $wpdb->query($add_query);
if ($result === false)
{
  die('Could not run query');
}

编辑: 顺便说一句,还要注意,您不应该像使用 wpdb 类时那样使用 mysql_error() 。要获取最后一个错误,您可以使用 $wpdb->print_error();

The problem is that your query is returning 0 which is interpreted as false in your statment:

$wpdb->query($add_query) or die(mysql_error());

From the wpdb class reference:

The function returns an integer
corresponding to the number of rows
affected/selected. If there is a MySQL
error, the function will return FALSE.
(Note: since both 0 and FALSE can be
returned, make sure you use the
correct comparison operator: equality
== vs. identicality ===).

What you should do is something like:

$result = $wpdb->query($add_query);
if ($result === false)
{
  die('Could not run query');
}

Edit: By the way, also note that you should not use mysql_error() like you do when you use the wpdb class. To get the last error, you can use $wpdb->print_error();.

贩梦商人 2024-11-17 16:31:40

在所有附加评论之后,我建议添加附加查询,即

SHOW TABLES LIKE 'thetesttable';

如果上述查询没有结果,则运行 CREATE TABLE 查询,如果表存在则跳过它存在。

After all additional comments, than I suggest adding additional query which is

SHOW TABLES LIKE 'thetesttable';

Run the CREATE TABLE query if no results from above one and skip it if table exist.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文