【问题标题】:Date is not inserting in mysql日期未插入 mysql
【发布时间】:2014-09-18 11:09:46
【问题描述】:

日期未插入数据库的 login_date 字段。当我在 phpmyadmin 中运行 sql 查询时,它显示以下错误

1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近 ''user_id','login_date','login_time','logout_date','logout_time')values('12','201' 在第 1 行

提前致谢。

代码:

$date=date("d/m/y", time());
$time=date("H:i:s",time());
$q = $_POST['id'];

$sql1="insert into entries('user_id','login_date','login_time','logout_date','logout_time')values('$q','$date','$time','$date','$time')";
$res1=mysql_query($sql1);

【问题讨论】:

  • 将 'user_id','login_date' 转换为 user_id,login_date 等字段名称。
  • 数据库中login_date字段的数据类型是什么。
  • 可能忘记了空间? insert into () values ()
  • login_date 的数据类型是“日期”
  • 为什么这么多人混合使用单引号和反引号?很简单:变量用单引号,列名和表名用反引号!

标签: php mysql


【解决方案1】:

这是因为您在列名周围使用了单引号 '。列名不是字符串。

你不应该使用任何东西,或者最好使用反引号,`,像这样:

$sql1 = <<< SQL
    INSERT INTO `entries` (
        `user_id`,
        `login_date`,
        `login_time`,
        `logout_date`,
        `logout_time`
    ) VALUES (
        '{$q}',
        '{$date}',
        '{$time}',
        '{$date}',
        '{$time}'
    )
SQL;

【讨论】:

  • 你为什么在这里使用文档回显?这是一种古老的做法,再也不会使用了。你应该正确地格式化你的字符串。
  • @Mr.E 我只是这样过时,年轻人。多行字符串使用引号看起来很奇怪。 heredoc 语法很适合这样的东西。
【解决方案2】:

' MySQL 认为它是一个字符串,但你想命名一个列。要么简单地删除那些单引号,要么使用反引号。

像这样:

$date=date("d/m/y", time());
$time=date("H:i:s",time());
$q = $_POST['id'];

$sql1="insert into entries(`user_id`, `login_date`, `login_time`, `logout_date`, `logout_time`)values('{$q}','{$date}','{$time}','{$date}','{$time}')";
$res1=mysql_query($sql1);

【讨论】:

  • 这里你插入字符串值$q, $date,...而不是PHP变量的值!
【解决方案3】:

由于我假设您的 user_id 列是整数,因此您应该将 $q 变量从引号中取出。出于某种原因,您只需要将字符串放在引号中。

【讨论】:

    【解决方案4】:

    您的数据库不喜欢单引号中的列名,请尝试使用

    `user_id`
    

    而不是

    'user_id'
    

    【讨论】:

      【解决方案5】:

      用这个替换你的行

      $sql1="insert into entries(user_id,login_date,login_time,logout_date,logout_time) values('$q','$date','$time','$date','$time')";
      

      不要在列名中使用单引号。

      【讨论】:

      • 对这些值使用连接,在这里您插入的是字符串值($q, $date,...),而不是对应于 PHP 变量的值
      【解决方案6】:

      mysql 的日期格式是 Y-m-d,所以如果 login_date 是 date 类型,那么使用 :-

      $date=date("Y-m-d") 或 $date=date("Y-m-d H:i:s") 用于日期时间类型

      【讨论】:

        【解决方案7】:

        您的值用单引号括起来。使用反引号。

        $res1 = mysql_query("INSERT INTO entries (`user_id`, `login_date`, `login_time`, `logout_date`, `logout_time`) 
                     VALUES (
                       '".mysql_real_escape_string($q)."',
                       '".mysql_real_escape_string($date)."', 
                       '".mysql_real_escape_string($time)."')");
        
        $res1 = mysql_query($sql1);
        

        【讨论】:

          猜你喜欢
          • 2016-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-21
          • 2011-07-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多