【问题标题】:Getting blank date adding date to database (wordpress, php)获取空白日期将日期添加到数据库(wordpress,php)
【发布时间】:2013-08-27 15:59:02
【问题描述】:

基本上我正在尝试向我的数据库添加一个日期(只是一个日期,而不是日期时间)

这是我目前所拥有的:

$wpdb->insert(
    'my_table',
     array('date-adding'=>date('Y-m-d', '1994-06-14')), 
     array('%F')
);

它只是插入了0000-00-00,所以它的一些简单的东西是错误的——可能是%F,但不知道是什么。

谢谢

【问题讨论】:

  • 可能是缺少引号?虽然这不完全是错误的原因,但我不确定。
  • 是拼写错误还是缺少'?
  • RTFM: php.net/date date() NOT 使用字符串作为其时间戳输入。您正在尝试格式化数字 1994,这是 PHP 尝试将其转换为整数后剩下的日期字符串,这意味着您将处理 1970 年 1 月 1 日,大约 12 :上午 33 点。

标签: php mysql wordpress date


【解决方案1】:

您的PHP date() function 错误,您要完成什么?第二个参数应该是 UNIX 时间戳,而不是日期字符串。由于您也只是为其提供了一个静态时间字符串,因此只需使用 '1994-06-14',没有理由尝试使用 date() 函数。

如果您想要使用字符串进行动态处理,请尝试以下操作:

date('Y-m-d', strtotime($dynamic_date_string))

讨论后编辑: 根本问题原来是第三个参数格式化字符串将日期格式化为浮点数。由于没有理由格式化日期,删除该可选参数解决了这个问题。此外,使用%s 将输入格式化为字符串也可以。

【讨论】:

  • 只需用户输入 - 他们输入他们的出生日期并将其保存到数据库中。所以我只是想将我拥有的任何日期作为字符串添加到我的数据库中,但一切都是空白的:S
  • @JamesB123 您可以向我们展示您的输入表单,以便更清楚地了解“如何”回答。
  • 对不起,我为这个问题缩短了所有内容 - 现在我的代码实际上就是上面的 - 我只是将 ('1994-06-14') 中的静态字符串传递到我的数据库表中,仅此而已上面缺少的是 php 标签和全局 $wpdb;
  • @JamesB123 另外,在你的脚本中,试着展示$wpdb 实际做了什么。我会在我的$wpdb->insert 运行var_dump($wpdb->last_query); exit(); 之后验证执行的查询是我想要的。
  • 是的,第三个参数是可选的,只有在清理数据时才真正需要,因为您强制输入格式,所以不需要它。另外,请查看the documentation,因为这些变量将帮助您摆脱很多棘手的情况。
【解决方案2】:

可能的解决方案:

使用strtotime() 和date():

$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));

来源:https://stackoverflow.com/a/2487938/1415724


编辑#2

看看这个:

<html>
<head>
<title>..</title>
<body>
<form action="work1.php" method="post">
Value1: <input type="text" name="date"><br>
<input type="Submit"/>
</form>
</body>
</head>
</html>

<?php
$username="root";
$password="abcdef";
$database="test_date";
$date=$_POST["date"];  // Your First Problem Post value
echo $date;
echo "i m here";
$date = date("Y/m/d", strtotime($date));   // 2nd Problem Date Format
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("Unable to select database");

$query = "INSERT INTO date VALUES('','$date')";

mysql_query($query);

mysql_close();
?>

来源:http://www.daniweb.com/web-development/php/threads/300356/date-stored-in-mysql-as-0000-00-00

或:

$date = date("Y-m-d", strtotime($_POST['date']));
$result = mysqli_query($link,"INSERT INTO visit_exclude_dates (date) VALUES ('{$date}')");

if(!$result) {
    echo "Error: " . $link->error);
    die();
}

$result->close();
$link->close();

来源:https://stackoverflow.com/a/16991316/1415724


“编辑”

鉴于数据来自输入表单字段,这是一个更新的答案。

如果您尝试将数据作为“字符串”传递,请改用双引号。

即:$string="1994-06-14"; 与 $string='1994-06-14'; 相比

在 PHP 中的处理方式不同。

尝试使用以下示例:

<input type="text" name="date_input" value="<?php echo htmlspecialchars($date); ?>" />

【讨论】:

  • 仍然空白:S
  • @JamesB123 没有看到完整的源代码,我比其他人更难工作,对不起。
  • @JamesB123 检查您的数据库表/值设置为。
  • @JamesB123 看看这个答案在 SO stackoverflow.com/a/12120457/1415724
  • 谢谢看了一下,但仍然没有,我唯一能想到的是 %F 应该是别的东西 - 在 phpMyAdmin 中,格式实际上设置为日期并显示为 0000- 00-00 如果我在 myAdmin 中输入 sql 查询,一切正常
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
  • 2013-04-29
  • 2011-05-31
  • 2019-09-15
  • 1970-01-01
相关资源
最近更新 更多