gpt4 book ai didi

mysql - Drupal 7 函数 db_​​insert() 导致内部服务器错误 (500)

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

我正在构建一种现场支付方式,除其他外,我需要在收到来自外部 API 服务的回调后将数据保存到自定义数据库表。

这是函数:

// callback from external service acting as client
function _api_callback() {
global $user;
$data = json_decode(file_get_contents("php://input"), $assoc = true);
$date = $date['year'] . '-' . $date['month'] . '-' . $date['day'];
$timestamp = strtotime($date);
db_insert('postback')
->fields(array(
'user_id' => $user->uid,
'data' => $data,
'created_date' => $timestamp,
))
->execute(); // save data from external service
}

在网站的访问日志中,我可以看到当外部回调到达时,我的网站会响应 500 代码。

但是,如果我注释掉该函数中的所有内容,外部回调会收到 200 响应代码。

因此,当收到此回调时,出现了一些问题。由于来自外部 API 服务的回调会启动一个全新的 session ,因此很难调试。

自定义表“postback”已在自定义模块的 .install 文件中成功创建,并且我已在 phpMyAdmin 中检查该表是否存在且状态良好。这是 .install 文件中的 schema() 函数:

function module_payments_schema() {
$schema['postback'] = array(
'description' => 'Data saved from API postback URL.',
'fields' => array(
'id' => array(
'description' => 'Auto incremental id.',
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE),
'user_id' => array(
'description' => 'User id for the order.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => FALSE),
'order_id' => array(
'description' => 'Current order number.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0),
'data' => array(
'description' => 'Postback data from external API.',
'type' => 'varchar',
'length' => 1020,
'not null' => TRUE,
'default' => ''),
'created_date' => array(
'description' => 'Created date and time (yyyy-mm-dd H:i:s).',
'type' => 'varchar',
'mysql_type' => 'DATETIME',
'not null' => TRUE,
),
),
'primary key' => array('id'),
);

return $schema;
}

谁能看出问题所在吗?

最佳答案

事实证明我需要像这样格式化日期值......

date('Y-m-d H:i:s');

...为了使用 mysql DATETIME 类型。

所以工作函数现在看起来像这样:

function _api_callback() {
global $user;
$data = json_decode(file_get_contents("php://input"), $assoc = true);
db_insert('postback')
->fields(array(
'user_id' => $user->uid,
'data' => $data,
'created_date' => date('Y-m-d H:i:s');
))
->execute(); // save data from external service
}

关于mysql - Drupal 7 函数 db_​​insert() 导致内部服务器错误 (500),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58099287/

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