mysql插入不同的值

时间:2013-02-09 07:23:36

标签: php mysql sql sql-insert

$insert = mysql_query("
    INSERT into analytics.pagesummary (Date, avg_load_time, min_load_time, max_load_time) 
    VALUES ($date,$string_avg, $string_min,$string_max)" ) 
    or die('PROBLEM'.mysql_error());

实际日期值= '2013-02-07', '2013-02-08', '2013-02-09' 触发查询后数据库中的日期值= '2004', '2003', '2002'

显示avg_load_timemin_load_time&的其他值max_load_time是正确的。

我们哪里出错了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

因为值没有包装在单个引号中而且mysql默默地隐式地转换值,它应该是

INSERT INTO analytics.pagesummary (Date, avg_load_time, min_load_time, max_load_time) 
VALUES ('$date', '$string_avg', '$string_min', '$string_max')

插入时2013-02-07成为2004的原因是因为它执行算术运算,以便

2013 - 02 = 2011 - 07 = 2004
2013 - 02 = 2011 - 08 = 2003
2013 - 02 = 2011 - 09 = 2002

作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。