Php 如何插入到包含外键的表中

Php 如何插入到包含外键的表中,php,insert,foreign-keys,Php,Insert,Foreign Keys,我是新手,我有很多问题, 我无法更新表上载,因为我在其中插入了表请求中的外键 有人能帮我吗 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; 如果我想创建新的请求,它会在表请求中创建

我是新手,我有很多问题, 我无法更新表上载,因为我在其中插入了表请求中的外键 有人能帮我吗

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\u请求,我用最后一个插入id填写

同时,在我被插入表上载中的id_请求之后,我使用query-to-by-insert或update查询插入附件 但总有错误

错误如下所示:

警告:mysql\u query()[function.mysql query]:mysql服务器已消失在第32行的C:\wamp\www\beta\insert.php中

警告:mysql\u query()[function.mysql query]:在第32行的C:\wamp\www\beta\insert.php中读取结果集的头时出错

这是第32行
mysql_query($up)或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";
}
?>

首先,记得清理数据!您的代码易受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";
}
?>

嗨,请把你的问题说得更详细些。你到底有什么问题?你有错误吗?你的表格是什么样子的?你能发布
SHOW CREATE TABLE request的结果吗
显示创建表上传
和相关数据库条目?错误如下:“警告:mysql\u query()[function.mysql query]:mysql服务器在第32行的C:\wamp\www\beta\insert.php中消失”和“警告:mysql\u query()[function.mysql query]:读取C:\wamp\www\beta\insert.php中的结果集标题时出错,第32行“我把代码放在哪里了?它是在我使用最后一个插入id插入id请求时放的?对不起,我是新手,我不明白,你能帮我更详细些吗