2011-10-11 95 views
0

我是新手,我得到問題, 我無法更新表上載,因爲我從表請求中插入外鍵 任何人都可以幫助我嗎?如何插入包含外鍵的表

table request: 
id_request; Primary Key 
subjek; 
email; 
reportto; 
pelaksana; 
isi; 

table upload: 
id_upload; Primary Key 
id_request; Foreign Key 
filename; 
filetype; 
filesize; 
filedata; 

,如果我想創造新的請求時,它會創建表請求記錄,插入數據表的要求,而且在表上載插入id_request,我填與LAST_INSERT_ID

在同一時間,我被插入到表上傳id_request後,我用查詢通過插入或更新查詢 插入附件但老是報錯

的錯誤一直在尋找這樣的:

警告:mysql_qu注意:mysql_query()[function.mysql-query]:error()[function.mysql-query]:MySQL服務器已在C:\ wamp \ www \ beta \ insert.php上消失32行

警告:讀取結果集的頭在C:上線32

這個\ WAMP \ WWW \測試\ insert.php是線32 mysql_query($up)or die('Error upload file');

這是我的房源碼

<?php 
include('config.php'); 
session_start(); 

$jenis = $_POST['jenis']; 
$subjek = $_POST['subject']; 
$username = $_SESSION['username']; 
$email = $_SESSION['email']; 
$reportto = $_SESSION['reportto']; 
$pelaksana = $_POST['pelaksana']; 
$ket = $_POST['isi']; 

$uploaddir = 'attach/'; 
$filedata = addslashes(fread(fopen($_FILES['uploadfile']['tmp_name'], 'r'), 
      $_FILES['uploadfile']['size'])); 
$filetype = $_FILES['uploadfile']['type']; 
$filesize = $_FILES['uploadfile']['size']; 
$filename = $_FILES['uploadfile']['name']; 

$query = "INSERT INTO request (waktu, jenis_request, subject, customer, isi, pelaksana) 
    VALUES (NOW(), '".$jenis."', '".$subjek."', '".$username."', '".$ket."', '".$pelaksana."')"; 
mysql_query($query)or die('Error, insert query failed'); 
$ff = mysql_query("insert into upload (id_request) select id_request from request where id_request = LAST_INSERT_ID()"); 

$up = "update upload set deskripsi = '".$subjek."' , filetype = '".$filetype."', filename = '".$filename."', filedata = '".$filedata."', filesize = '".$filesize."' where id_request =  last_insert_id()"; 
mysql_query($up)or die('Error upload file'); 

$uploadfile = $uploaddir . $filename; 
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile)) 
{ 
echo "File telah diupload\n"; 
echo '$filename\n'; 
// header("location: home.php"); 

} 
else 
{ 
echo "File gagal diupload"; 
} 
?> 
+0

你好,請你的問題更詳細。你的問題到底是什麼?你有錯誤嗎?你的桌子是什麼樣的? – deceze

+0

你可以發佈'SHOW CREATE TABLE請求;'和'SHOW CREATE TABLE上傳'和相關數據庫條目的結果嗎? –

+0

錯誤看起來像這樣:「Warning:mysql_query()[function.mysql-query]:MySQL服務器已經消失在C:\ wamp \ www \ beta \ insert.php第32行」和「Warning:mysql_query( )[function.mysql-query]:在第32行讀取C:\ wamp \ www \ beta \ insert.php中的結果集頭時出錯「 –

回答

0

首先,記得清理你的數據!您的代碼易受SQL注入攻擊。要獲取插入的ID,你這樣做

$sql = "INSERT INTO ..."; 
$result = mysql_query($sql); 

$new_row_id = mysql_insert_id(); 

在你的代碼,你不打開一個MySQL連接,選擇一個數據庫,等等。如果你不這樣做,在包括config.php文件,然後這是導致錯誤。

編輯

我無法真正瞭解你的腳本,因爲它似乎是在另一種語言,但是這是我想出了

<?php 
include('config.php'); 
session_start(); 

//filter the data 
$jenis  = filter_var($_POST['jenis'], FILTER_SANITIZE_STRING); 
$subjek  = filter_var($_POST['subject'], FILTER_SANITIZE_STRING); 
$pelaksana   = filter_var($_POST['pelaksana'], FILTER_SANITIZE_STRING); 
$ket  = filter_var($_POST['isi'], FILTER_SANITIZE_STRING); 


$username = $_SESSION['username']; 
$email  = $_SESSION['email']; 
$reportto = $_SESSION['reportto']; 


$uploaddir = 'attach/'; 
$filedata = addslashes(fread(fopen($_FILES['uploadfile']['tmp_name'], 'r'), 
      $_FILES['uploadfile']['size'])); 
$filetype = $_FILES['uploadfile']['type']; 
$filesize = $_FILES['uploadfile']['size']; 
$filename = $_FILES['uploadfile']['name']; 

$sql = "INSERT INTO request (waktu, jenis_request, subject, customer, isi, pelaksana) VALUES (NOW(), '{$jenis}', '{$subjek}', '{$username}', '{$ket}', '{$pelaksana}')"; 

$result = mysql_query($sql); 
$id_inserted_request = mysql_insert_id(); 

$sql = mysql_query("INSERT INTO upload (deskripsi, filetype, filename, filedata, filesize, id_request) VALUES('{$subjek}', '{$filetype}', '{$filename}', '{$filedata}', '{$filedata}', '{$filesize}', '{$id_inserted_request}') "); 

mysql_query($sql) 

$uploadfile = $uploaddir . $filename; 
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile)) 
{ 
echo "File telah diupload\n"; 
echo "{$filename}\n"; 
// header("location: home.php"); 

} 
else 
{ 
echo "File gagal diupload"; 
} 
?> 
+0

我在那裏放置了代碼?當我插入id_request時使用last_insert_id對不起我是新手,我不明白,你能幫我更多特別的 –