0

我创建了一个服务和 callResponder(通过在 Flash Builder 4 中生成服务调用和生成表单),它可以查询 MySQL 数据库的姓名和出生日期。

我想我的问题很简单,但我一直无法找到解决方案......

当我在 MySQL (0000-00-00) 中有一个空日期时,我绑定的 DateField 指示 1899-11-30

我尝试了几乎所有可能的方法......一个自定义 labelFunction,一个在调用我的服务后直接调用的自定义函数,以尝试像这样处理我的数据......:

protected function parseDate(date:Date):void
{
    if (date.getFullYear() == -1) {
        friendbirthdate.selectedDate = null;
    }   else {
        var df:DateFormatter = new DateFormatter;
        df.formatString = 'YYYY-MM-DD';
        friendbirthdate.selectedDate = date;
    }
}

不幸的是,这仅部分有效。当我尝试在数据库中更新相同的表单时,我会断开连接。我在这里遗漏了一些东西,非常感谢一两个小费:-)

谢谢!

4

2 回答 2

0

我建议您为未知日期存储 NULL,而不是“0000-00-00”。在这种情况下,NULL 是更准确的值。

如果要将其存储为 NULL 并将其显示为不同的值,则可以执行以下操作:

SELECT COALESCE(date_column,'0000-00-00') as formatted_date
FROM your_table
于 2011-03-15T22:00:25.537 回答
0

不知道它是否会对某人有所帮助,但我无法从包含 DateField 的表单中插入值。该表单是通过 Flash Builder生成表单工具生成的。

问题是由 Flash Builder 生成的服务需要一个 Date 对象,无论如何...如果您提交表单时未在 DateField 中选择日期,则服务调用会崩溃。

让我们看一下生成的示例服务的一部分(创建和更新函数),我们可以看到 PHP 期望将日期对象转换为字符串,如下所示:

mysqli_stmt_bind_param($stmt, 'sss', $item->friendname, $item->friendlastname,  $item->friendbirth->toString('YYYY-MM-dd HH:mm:ss'));

首先,确保 MySQL 中的 Date 字段具有 NULL 默认值。

然后像这样改变创建和更新函数:

if ($item->friendbirth == null)
    $friendbirth = null;
else
    $friendbirth = $item->friendbirth->toString('yyyy-MM-dd HH:mm:ss');

mysqli_stmt_bind_param($stmt, 'sss', $item->friendname, $item->friendnickname, $friendbirth);

这样,服务调用脚本就不会尝试做null->toString('...')

于 2011-03-16T19:15:18.310 回答