【发布时间】:2011-07-17 09:05:21
【问题描述】:
我在尝试向我的 mysql 数据库中插入一行时遇到了这个奇怪的问题。
这就是想法。列出了一系列锻炼,您可以添加数量并检查要添加此锻炼的日期(周日、周一、周二、周三、周四、周五、周六)并将其添加到您的日记中。
这是我的代码。
$addDiary = array();
$addTimestamp = array();
$addDiary[] = '('.$current_user->id.', '.$_POST['exid_'.$i].', '.$_POST['qty_'.$i].', '.$calories_mod.', '.implode('.', $addTimestamp).')';
$queryAddDiary = mysql_query("INSERT INTO LHNZ_FT_DIARY (USER_ID, EXERCISE_ID, TIME, CALORIES, TIMESTAMPS) VALUES ".implode(',', $addDiary));
我已经回显了 addDiary 数组和 addTimestamp 数组,它看起来不错。
$addTimestamp: 1311206400.1311292800.1311379200
$addDiary: (2, 1, 1, 678, 1311206400.1311292800.1311379200)
如果我的 $addTimestamp 数组的长度为 1 或 2,则该查询运行良好。但是,当长度大于 2 时,它会处理此错误。
您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 1 行的“.1311379200)”附近
现在。如果我使用“。”,则会显示此错误。或 ':' 作为我对 $addTimestamp 的内爆。如果我使用字母或“_”,它会消除此错误。
“字段列表”中的未知列“1311206400_1311292800_1311379200”
关于如何使用长度大于 2 的 $addTimestamp 的任何想法(这意味着我可以每周三天做这个练习......这是它出错的地方)。
谢谢,
- 顿
【问题讨论】:
-
在查询中直接使用 POST 数据是个坏主意 - 正如 Kami 所说,您对 SQL 注入持开放态度。请不要在新代码中使用bit.ly/phpmsql mysql_* 函数。它们不再被维护并且被wiki.php.net/rfc/mysql_deprecation 正式弃用。改为了解php.net/pdo PDO 或php.net/mysqli MySQLi。
标签: php mysql arrays insert implode