【问题标题】:sql date conversion doesn't work with wordpresssql日期转换不适用于wordpress
【发布时间】:2021-02-22 16:05:42
【问题描述】:

我在 wordpress 的 ajax 调用期间使用以下代码:

$quote_infos = $wpdb->get_results($wpdb->prepare(
"SELECT quantity, price, post_title AS name, validated, user_login
FROM {$quotes_details_table} 
INNER JOIN {$posts_table} ON {$quotes_details_table}.product_id = {$posts_table}.ID
INNER JOIN {$quotes_table} ON {$quotes_details_table}.quote_id = {$quotes_table}.id
INNER JOIN {$users_table} ON {$quotes_table}.id_client = {$users_table}.ID
WHERE {$quotes_details_table}.quote_id = %s", $quote_id
));
$quote_infos = json_encode($quote_infos);
echo $quote_infos;
wp_die();

这段代码运行良好。

但是当我尝试以这种方式转换我的验证字段(日期时间格式)时:

"SELECT quantity, price, post_title AS name, DATE_FORMAT(validated, '%d/%m/%Y'), user_login...

我的代码不再工作并返回 null。

你知道我的问题的根源吗?

【问题讨论】:

  • 您检查错误日志了吗?因为不清楚为什么这个特定的变化(如果这就是你改变的全部)会导致问题
  • 你的意思是它为格式化的日期返回 NULL 吗?还是整个查询结果为 Null??
  • 当我以这种方式显示我解析的 ajax 响应时:quote_details = JSON.parse(response); console.log(quote_details);我的控制台对我的 console.log 的回答为 null。
  • 那么您是否查看了调试器中的网络选项卡以查看实际发送的内容?

标签: php sql wordpress


【解决方案1】:

我终于找到了问题的根源:

我在我的请求中使用了 $wpdb-prepare。我刚刚在文档 (https://developer.wordpress.org/reference/classes/wpdb/prepare/) 中看到我需要在我的格式中添加一个“%”,如下所示:

DATE_FORMAT(validated, '%%d/%%m/%%Y') 而不是 DATE_FORMAT(validated, '% d/%m/%Y')。

非常感谢@RiggsFolly 试图帮助我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多