我无法使用php将行插入数据库

时间:2016-04-06 19:44:10

标签: php mysql

我正在尝试保存到数据库行。但我总是错误。

我的代码是:

function save_activation_key($connection, $username, $key) {
    $date = time();
    $is_used = 0;
    $query = "INSERT INTO account_activation_key (  key, date,  is_used)
    VALUES (    '" . $username . "',"
                . " '" . $date . "',"
                . " '" . $is_used . "')";
    $retval = mysql_query($query, $connection);
    echo $retval;
    $retval = mysql_query( $query, $connection );
    if(! $retval )
    {
      die('Could not enter data: ' . mysql_error());
    }    
}

$connection中是与数据库的有效连接。

数据库结构:

id : int
key: varcha(45)
date: date
is_used: tinyint(1)

当我调用我的代码时,我收到错误:

Could not enter data: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key, date, is_used) VALUES (   'uzivatelsky_jmeno', '1459971829', '0')' at line 1

哪里有问题?

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

key是一个MYSQL保留字,不应该真正用作列名。

  

MYSQL保留字列表可以在https://dev.mysql.com/doc/refman/5.7/en/keywords.html

找到

但是如果你将这些列名包装在反引号中,你就可以逃脱它。

您还可以像下面这样简化查询字符串连接,这使得调试变得更加容易。

function save_activation_key($connection, $username, $key) {
    $date = time();
    $is_used = 0;
    $query = "INSERT INTO `account_activation_key` 
                     (  `key`, `date`,  `is_used`)
              VALUES ( '$username', '$date', '$is_used')";

    $retval = mysql_query($query, $connection);
    echo $retval;
    $retval = mysql_query( $query, $connection );
    if(! $retval )
    {
      die('Could not enter data: ' . mysql_error());
    }    
}
  

BIG NOTE

     

请不要使用the mysql_ database extension,它   不推荐使用(在PHP7中永远消失)这意味着当所有可用的代码都是PHP7或更高版本时,此代码将永远不会运行。   特别是如果您只是学习PHP,请花时间学习PDOmysqli_数据库扩展,   and here is some help to decide which to use

答案 1 :(得分:-2)

可能您的查询在您将整数作为字符串的位置包含错误,就像您的字符串一样 '“。$ username。”',“ 。 “'”。 $ date。 “”” 。 “'”。 $ is_used。 “'

应该是: '“。$ username。”',“。” 。 $ date。 “,”。“。$ is_used。”

整数不应该是单个qoutes“'”

可能这是错误的!