插入奇怪的Mysql问题

0 php mysql insert

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);
Run Code Online (Sandbox Code Playgroud)

我得不到回报,但是如果我改成它就没关系了:

$query = 'INSERT INTO users (`id`, `first_name`, `second_name`, `register_date`, `lastlogin_date`) 
VALUES ("21021212", "Joe", "Bloggs", "20090202", "20090202");'; 
$result = mysql_query($query);
Run Code Online (Sandbox Code Playgroud)

用户名= bigint(20)

名字= varchar(30)

第二名= varchar(30)

date = int(8)

起初我认为这是vars的一个问题,但它们完全一样,仍然无法正常工作.

任何帮助赞赏.

Pau*_*xon 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);
Run Code Online (Sandbox Code Playgroud)

并使用mysql_error检查错误

 if (!$result)
 {
     echo "Error in $query: ".mysql_error();
 }
Run Code Online (Sandbox Code Playgroud)