2010-09-09 116 views
1

我遇到了簡單表單上傳腳本的問題。將記錄插入到MySql數據庫中的問題

在我爲將數據上傳到MySql數據庫而構建的上傳腳本中,當我包含這一個變量時,似乎無法獲取要插入數據庫的記錄。

我想,也許我俯瞰一些小的編碼問題,我工作的最後期限,以獲得該系統活...

這是給我的問題代碼片段。

$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'的變量。

我以前的試驗表明:

  • 形式腳本收集數據正確地
  • 形式腳本通過方法正確地將數據傳遞到上載腳本=「POST」
  • 數據庫連接信息是正確的
  • 所有的MySQL查詢的字段名稱正確鍵入

預先感謝您的幫助。

更新:

回波mysql_error(); =>「您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊‘評價,形容)價值’在1號線

+0

可以打印出MySQL的錯誤我們mysql_error()? – Rakward 2010-09-09 18:34:23

回答

0

事實證明「Describe」是MySql中的保留字。

我改變字段名,現在我的腳本作品...

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); 

,並張貼到我們:)

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,", "); 
}