0

大家好,

不知道这里发生了什么,但如果我运行这个:

$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)

起初我认为这是 vars 的问题,但它们完全相同并且仍然不起作用。

任何帮助表示赞赏。

4

5 回答 5

6

养成使用mysql_real_escape_string转义所有数据库输入的习惯- 实际上,您应该使用某种包装器(如PDOADODb)来帮助您做到这一点,但如果没有,您可以这样做:

$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-29T15:16:38.327 回答
4

“mysql_error()”的结果是什么?始终检查这一点,特别是如果某些东西似乎不起作用。

另外,回显 $query 以查看它的真实外观。这可以说明。

于 2009-03-29T15:08:39.440 回答
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 ));
于 2009-03-29T15:25:04.063 回答
0

除了mysql_error()像@GoatRider 建议的那样回显查询和检查:

  1. 您是否正确地转义了数据?看mysql_real_escape_string()
  2. 使用时不应以分号结束查询mysql_query()
于 2009-03-29T15:15:51.777 回答
0

在 $query = 'INSERT INTO users ( id, first_name, second_name, register_date, lastlogin_date) VALUES ("' . $user_id . '", "' . $first_name . '", "' . $second_name . '", "' . $date . ' ", "' . $date . '"); 你给出正确的日期格式吗?这可能是问题所在。否则语法都很好。

于 2009-03-29T16:19:02.577 回答