首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入时出现奇怪的Mysql问题

插入时出现奇怪的Mysql问题
EN

Stack Overflow用户
提问于 2009-03-29 15:05:22
回答 5查看 155关注 0票数 0

大家好,

不确定这里发生了什么,但如果我运行以下命令:

代码语言:javascript
复制
$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);

我没有得到任何返回值,但是如果我把它改成这样就没问题了:

代码语言:javascript
复制
$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的问题,但它们是完全相同的,仍然不能工作。

感谢您的帮助。

EN

回答 5

Stack Overflow用户

发布于 2009-03-29 15:16:38

养成用mysql_real_escape_string转义所有数据库输入的习惯--实际上,你应该使用PDOADODb这样的包装器来帮助你做到这一点,但下面是你可以不这样做的方法:

代码语言:javascript
复制
$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检查错误

代码语言:javascript
复制
 if (!$result)
 {
     echo "Error in $query: ".mysql_error();
 }
票数 6
EN

Stack Overflow用户

发布于 2009-03-29 15:08:39

"mysql_error()“的结果是什么?一定要检查这一点,特别是当某些东西似乎不工作的时候。

另外,回显$query,看看它到底是什么样子。这很能说明问题。

票数 4
EN

Stack Overflow用户

发布于 2009-03-29 15:25:04

也许$date的值是"1111'); DELETE FROM users;"

说真的吗?问题是,这并不是您与数据库交互的方式。您不应该在查询时传入数据。您需要指定查询、查询的参数,并在执行查询时传入实际参数值。任何其他的东西都是低效的,不安全的,并且容易出现像你这样的bug。

通过使用PDO或其他支持参数化查询的工具,您会发现这些类型的问题会消失,因为您调用的是数据库属性。它也更加安全,可以加快数据库的运行速度。

代码语言:javascript
复制
$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 ));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/694763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档