将记录插入MySql数据库时出现问题

时间:2010-09-09 18:28:54

标签: php mysql

我遇到了一个简单的表单上传脚本的问题。

在我为将数据上传到MySql数据库而构建的上传脚本中,当我包含这一个变量时,我似乎无法将记录插入到数据库中。

我想也许我忽略了一些小编码问题,而且我正在制定一个截止日期来让这个系统生效......

这是给我问题的代码snippit。

    $title=$_REQUEST['title'];
$author=$_REQUEST['author'];
$hours=$_REQUEST['hours'];
$start_d=$_REQUEST['start_d'];
$start_m=$_REQUEST['start_m'];
$start_y=$_REQUEST['start_y'];
$end_d=$_REQUEST['end_d'];
$end_m=$_REQUEST['end_m'];
$end_y=$_REQUEST['end_y'];
$certificate=$_REQUEST['certificate'];
$required=$_REQUEST['required'];
$assessment=$_REQUEST['assessment'];
$describe=$_REQUEST['description'];
$query=mysql_query("INSERT INTO `records` (title, hours, start_date_d, start_date_m, start_date_y , end_date_d, end_date_m, end_date_y , certificate, requirement, author, approved, assessment, describe)  VALUES ('$title', '$hours', '$start_d', '$start_m', '$start_y', '$end_d', '$end_m', '$end_y', '$certificate', '$required', '$author', '0', '$assessment', '$describe')");

mysql_close();

给我提出问题的变量是表示为'$ describe'的变量。

我之前的测试表明:

  • 表单脚本正在正确收集数据
  • 表单脚本通过method ='post'
  • 正确地将数据传递给上传脚本
  • 数据库连接信息正确
  • mysql查询中的所有字段名称都是正确输入的

提前感谢您的帮助。

更新

echo mysql_error(); => “你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在'评估,描述'附近使用正确的语法”第1行的“VALUES”

3 个答案:

答案 0 :(得分:3)

这个糟糕的代码应该被完全重写 但要解决这个问题

foreach ($_REQUEST as $key => $value) $_REQUEST[$key] = mysql_real_escape_string($value);

像这样的东西。 请注意,我已将日期字段更改为date格式。

$_POST['start_date'] = $_POST['start_y'].'-'.$_POST['start_m'].'-'.$_POST['start_d'];
$_POST['end_date'] = $_POST['end_y'].'-'.$_POST['end_m'].'-'.$_POST['end_d'];
$_POST['approved'] = 0;

$fields = explode(" ","title author hours start_date end_date certificate required assessment describe");

$query = "INSERT INTO `records` SET ".dbSet($fields);
mysql_query($query) or trigger_error(mysql_error().$query);

function dbSet($fields) {
  $q='';
  foreach ($fields as $v) $q.="`$v`='".mysql_real_escape_string($_POST[$v])."', ";
  return trim($q,", ");
}

答案 1 :(得分:0)

试试这个:

$query="INSERT INTO `records` (title, hours, start_date_d, start_date_m, start_date_y , end_date_d, end_date_m, end_date_y , certificate, requirement, author, approved, assessment, describe)  VALUES ('$title', '$hours', '$start_d', '$start_m', '$start_y', '$end_d', '$end_m', '$end_y', '$certificate', '$required', '$author', '0', '$assessment', '$describe')";
var_dump($query);

并发给我们:)

答案 2 :(得分:0)

事实证明,“描述”是MySql中的保留字。

我更改了字段名称,现在我的脚本正常工作......