gpt4 book ai didi

mysql - Wordpress 查询不工作 - 没有错误 - 否则查询正常

转载 作者:行者123 更新时间:2023-11-30 23:24:15 24 4
gpt4 key购买 nike

我有一个要执行的 $wpdb 查询,但它没有执行并且没有抛出任何错误:

$followups = 
$wpdb->get_results(
$wpdb->prepare(
"SELECT * FROM orders
WHERE status_id = %d
AND DATEDIFF(CURDATE(), date_waiting_pickup) % 7 = %d",
array(66, 0)
)
);

知道为什么吗?它在终端/直接 MySQL 中运行良好。是 DIFFDATE() 函数吗?

编辑:有趣的是,如果我删除 $wpdb->prepare 函数,并保留 $wpdb->get_results(),它工作正常。那么,就 $wpdb->prepare() 的工作原理而言,我是否遗漏了什么?

最佳答案

如果您想要上周的订单...您为什么不简化它?不需要第二个%d直接放0就可以了。

$followups = 
$wpdb->get_results(
$wpdb->prepare(
"SELECT * FROM orders
WHERE status_id = %d
AND DATEDIFF(CURDATE(), date_waiting_pickup) % 7 = 0",
66
)
);

更新:

@dtj 您正在使用 mod (%) 运算符来为我们提供除法的余数。因此,与 0(我的第一个假设)相比,我们获得今天、1 周前、2 周前等的订单。如果我们与 1(在第二个 %d) 我们获得昨天、8 天前等的订单表格...

这真的是你想要的吗?

更新 2:在您编辑的问题中,您说删除 $wpdb->prepare() 一切正常。毫无疑问,这很有趣,但幸运的是,如果您只处理整数,则您真的不需要 prepare()。我的意思是:

$status_id = (int) (is_numeric($status_id) ? $status_id : 0);

$followups = $wpdb->get_results("
SELECT * FROM orders
WHERE status_id = $status_id
AND DATEDIFF(CURDATE(), date_waiting_pickup) % 7 = 0");

您可以确保安全查询并获得简单性和效率。在我的例子中,如果有 strings 涉及,我只使用 prepare() 并且总是测试整数,如图所示。

关于mysql - Wordpress 查询不工作 - 没有错误 - 否则查询正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com