2011-10-11 4 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 ery() [function.mysql-query] : MySQL 서버가 32 행의 C : \ wamp \ www \ beta \ insert.php에있다.

경고 : mysql_query (function.mysql-query) : 오류 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 request;와'SHOW CREATE TABLE upload' 결과 및 관련 데이터베이스 항목을 게시 할 수 있습니까? –

+0

경고 : mysql_query() [function.mysql-query] : MySQL 서버가 32 행의 C : \ wamp \ www \ beta \ insert.php에 없어져 경고 : mysql_query) [function.mysql-query] : C : \ wamp \ www \ beta \ insert.php 32 행의 결과 집합의 헤더를 읽는 중 오류가 발생했습니다. " –

답변

0

우선이다, 귀하의 데이터를 위생적으로 기억하십시오! 귀하의 코드는 SQL 삽입에 취약합니다. 당신이 일을하지 않는 경우 삽입 ID를 얻으려면, 당신은 당신의 코드에서이

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

$new_row_id = mysql_insert_id(); 

을, 당신은 MySQL의 연결을 열고 DB 등을 선택하지 않은 포함 된 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

그 코드를 어디에 넣었습니까? last_insert_id를 사용하여 id_request를 삽입하면 삽입됩니까? 나는 이해하지 못하는 초보자 다. –

관련 문제