Hy all,
不确定这里发生了什么,但如果我这样做:
$query = 'INSERT INTO users
(`id`, `first_name`, `second_name`, `register_date`, `lastlogin_date`)
VALUES
("'. $user_id . '", "' . $first_name .'", "'. $second_name . '", "' . $date . '", "' . $date . ");';
$result = mysql_query($query);
我得不到回报,但是如果我改成它就没问题了:
$query = 'INSERT INTO users (`id`, `first_name`, `second_name`, `register_date`, `lastlogin_date`)
VALUES ("21021212", "Joe", "Bloggs", "20090202", "20090202");';
$result = mysql_query($query);
用户ID = bigint(20)
first name = varchar(30)
第二名= varchar(30)
date = int(8)
起初我认为这是vars的一个问题,但它们完全相同但仍然无效。
任何帮助表示感谢。
答案 0 :(得分:6)
养成使用mysql_real_escape_string转义所有数据库输入的习惯 - 实际上,您应该使用某种类型的包装器,如PDO或ADODb来帮助您执行此操作,但这就是您的方法可能没有:
$query = sprintf("INSERT INTO users ".
"(id, first_name, second_name, register_date, lastlogin_date)".
"VALUES('%s','%s','%s','%s','%s')",
mysql_real_escape_string($user_id),
mysql_real_escape_string($first_name),
mysql_real_escape_string($second_name),
mysql_real_escape_string($date),
mysql_real_escape_string($date));
$result = mysql_query($query);
并检查mysql_error
的错误 if (!$result)
{
echo "Error in $query: ".mysql_error();
}
答案 1 :(得分:4)
“mysql_error()”的结果是什么?一定要检查一下,特别是如果某些东西看起来不起作用的话。
另外,回显$ query以查看其真实情况。这可能很有说服力。
答案 2 :(得分:1)
也许$date
的价值是"1111'); DELETE FROM users;"
?
说真的吗?问题是你不是如何与数据库交互。您不应该使用查询传递数据。您需要指定查询,查询的参数,并在执行查询时传入实际参数值。其他任何东西效率低下,不安全,容易出现像你那样的错误。
通过使用PDO或支持参数化查询的东西,您会发现这些问题会消失,因为您正在调用数据库属性。它也更安全,可以加速数据库。
$sth = $dbh->prepare("INSERT INTO users (`id`, `first_name`, `second_name`, `register_date`, `lastlogin_date`) VALUES (?,?,?,?,?)")
$sth->execute(array($user_id ,$first_name , $second_name , $date, $date ));
答案 3 :(得分:0)
除了回复查询并检查mysql_error()
为@GoatRider建议:
mysql_real_escape_string()
mysql_query()
答案 4 :(得分:0)
in $ query ='INSERT INTO用户(id
,first_name
,second_name
,register_date
,lastlogin_date
)VALUES(“'。$ user_id。 '“,”'。$ first_name。'“,”'。$ second_name。'“,”'。$ date。'“,”'。$ date。'“);
你给出了正确的日期格式吗?这可能是问题所在。否则语法都很好。