【问题标题】:PHP INSERT error when imploding an array with count greater than 2内爆计数大于 2 的数组时出现 PHP INSERT 错误
【发布时间】: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 的任何想法(这意味着我可以每周三天做这个练习......这是它出错的地方)。

谢谢,

【问题讨论】:

标签: php mysql arrays insert implode


【解决方案1】:

MySQL 查询中的字符串值必须用单引号括起来。

代替:

$addDiary[] = '('.$current_user->id.', '.$_POST['exid_'.$i].', '.$_POST['qty_'.$i].', '.$calories_mod.', '.implode('.', $addTimestamp).')'; 

做:

$addDiary[] = '('.$current_user->id.', '.$_POST['exid_'.$i].', '.$_POST['qty_'.$i].', '.$calories_mod.", '".implode('.', $addTimestamp)."')"; 

虽然我强烈建议您在将每个值粘合到 sql 查询之前也将其传递给 mysql_real_escape_string()。

【讨论】:

  • 已解决。非常感谢:]
猜你喜欢
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多