大家好,
不确定这里发生了什么,但如果我运行以下命令:
$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)
名字= varchar(30)
第二个名称= varchar(30)
日期= int(8)
起初,我认为这是var的问题,但它们是完全相同的,仍然不能工作。
感谢您的帮助。
发布于 2009-03-29 15:16:38
养成用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();
}发布于 2009-03-29 15:08:39
"mysql_error()“的结果是什么?一定要检查这一点,特别是当某些东西似乎不工作的时候。
另外,回显$query,看看它到底是什么样子。这很能说明问题。
发布于 2009-03-29 15:25:04
也许$date的值是"1111'); DELETE FROM users;"
说真的吗?问题是,这并不是您与数据库交互的方式。您不应该在查询时传入数据。您需要指定查询、查询的参数,并在执行查询时传入实际参数值。任何其他的东西都是低效的,不安全的,并且容易出现像你这样的bug。
通过使用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 ));https://stackoverflow.com/questions/694763
复制相似问题