2009-05-17 21 views
0

我对PHP很陌生,一直在阅读Larry Ullman的书来开发基本的数据库站点。 我已经使用YUI日历弹出日期选择器将日期添加到称为“日期”的文本字段。它进入日期格式是例如2009年5月7日,星期四如何将文本框中的日期转换为MySQL DATETIME格式

我已经尝试了许多不同的方式来尝试和输入日期在MySQL数据库,但它仍然在00 00 00 00 00 00 这是代码相关的日期字段我有,

// Check for a Date. 
if (eregi ("^([0-9]{2})/([0-9]{2})/([0-9]{4})$", $_POST['date'],)) { 
    $p = escape_data($_POST['date'],); 
} else { 
    $p = FALSE; 
    echo '<p><font color="red">Please enter a valid Date!</font></p>'; 
} 

    // Add the URL to the urls table. 
    $query = "INSERT INTO urls (url, title, description, date) VALUES ('$u', '$t', '$d', '$p')";   
    $result = @mysql_query ($query); // Run the query. 
    $uid = @mysql_insert_id(); // Get the url ID. 

    if ($uid > 0) { // New URL has been added. 

我想我已经提供了所有相关的信息,但再次道歉,如果这是没有帮助的,我会尽我所能提供的哟,你可能需要的任何其他信息。 谢谢 - 肖恩

回答

0

如果您的日期选择器传递的格式是“周四,2009年5月7日”,那么strtotime()date()功能,应努力给你一个有效日期传递到MySQL:

$p = date("Y-m-d H:i:s",strtotime('Thursday, 7 May 2009')); 

如果你的数据库字段是DATE,你可能只需要“Ymd”部分。如果是DATETIME,那么您还需要“H:i:s”。

+0

谢谢Zombat我会研究这个,我一直在看mktime字符串。谢谢 – Ddywalgi 2009-05-18 06:16:20

0

您可能需要格式化日期的方式,MySQL期望它的数据类型,否则它不能识别它。您可以使用正则表达式或类似方法来提取组件部分,并根据MySQL DATETIME类型的格式对其进行格式化。

编辑:见http://dev.mysql.com/doc/refman/5.0/en/datetime.html表示格式。此外,将日期/时间存储为unix时间戳可能会更好,因为通常这更容易维护。

+0

嗨,谢谢。我一直在学习Unix时间戳,我试图将文本转换为MySQL可以理解的值。 YYYY MM DD但我目前还没有看到它。 感谢您的建议我会阅读您发送的链接。 – Ddywalgi 2009-05-17 23:12:30

0

在MySQL的日期格式为YYYY-MM-DD,所以改变你接受如果eregi在PHP

数据((“^([0-9] {2})/([方式0-9] {2})/([0-9] {4})$“,$ _POST ['date'],)){ $ p = escape_data($ _ POST ['date'],);其他{ $ p = FALSE; echo'

请输入有效日期!

';

应该是

如果(eregi(“^([0-9] {4} /([0-9] {2})/([0-9] {2} ))$“,$ _POST ['date'],)){ $ p = escape_data($ _ POST ['date'],);其他{ $ p = FALSE; echo'

请输入有效日期!

';

相关问题