我遇到了一个简单的表单上传脚本的问题。
在我为将数据上传到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'的变量。
我之前的测试表明:
提前感谢您的帮助。
更新
echo mysql_error(); => “你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在'评估,描述'附近使用正确的语法”第1行的“VALUES”
答案 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中的保留字。
我更改了字段名称,现在我的脚本正常工作......