我创建了一个服务和callResponder(通过生成服务调用并在Flash Builder 4中生成表单),用于查询MySQL数据库中的名称和出生日期。
我的问题很简单,我想但是我找不到解决方案......
当我在MySQL(0000-00-00)中有一个空日期时,我的绑定日期字段表示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;
}
}
不幸的是,这只能部分起作用。当我尝试在数据库中更新同一个表单时,我断开连接。我在这里遗漏了一些东西,非常感谢一两个小贴士: - )
谢谢!
答案 0 :(得分:0)
我建议你为未知日期存储NULL,而不是'0000-00-00'。在这种情况下,NULL是更准确的值。
如果要将其存储为NULL并将其显示为不同的值,则可以执行以下操作:
SELECT COALESCE(date_column,'0000-00-00') as formatted_date
FROM your_table
答案 1 :(得分:0)
不知道它是否会对某人有所帮助,但我无法从包含DateField的表单中插入值。该表单已通过Flash Builder 生成表单工具生成。
问题是Flash Builder生成的服务需要一个Date对象,无论如何......如果您在DateField中没有选择日期的情况下提交表单,服务调用就会崩溃。
让我们看一下生成的示例服务(Create和Update函数)的一部分,我们可以看到PHP期望将Date对象转换为String,如下所示:
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('...')