我正在尝试保存到数据库行。但我总是错误。
我的代码是:
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
哪里有问题?
感谢您的帮助
答案 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,请花时间学习PDO
或mysqli_
数据库扩展, and here is some help to decide which to use
答案 1 :(得分:-2)
可能您的查询在您将整数作为字符串的位置包含错误,就像您的字符串一样 '“。$ username。”',“ 。 “'”。 $ date。 “”” 。 “'”。 $ is_used。 “'
应该是: '“。$ username。”',“。” 。 $ date。 “,”。“。$ is_used。”
整数不应该是单个qoutes“'”
可能这是错误的!