我在 mysql 数据库中有两个表:
这两个表值均由单个表单填充。在Car表中,我有一个名为'CarImageID'
的字段,它是一个具有自动增量的主键,而且在images表中我有相同的字段'CarImageID'
但是FK没有UNIQE INDEX。我想要的是每当我按下提交按钮时,第二个查询从第一个查询中获取其值。我也创造了他们之间的关系。我如何从Imagequery获取CarImageID并在我的第二个查询中使用它是CarInfoQuery?。
<?php
require_once('db.php');
@$CarID=$_POST['CarID'];
@$CarName=$_POST['pname'];
@$CarModel=$_POST['pstatus'];
if(isset($_FILES['file_upload']))
{
$shuff=str_shuffle("ABD6565LSLFKDSAJFD");
mkdir("upload/$shuff");
$files=$_FILES['file_upload'];
for($x = 0; $x < count($files['name']); $x++)
{
$name=$files['name'][$x];
$tmp_name=$files['tmp_name'][$x];
if(move_uploaded_file($tmp_name, "upload/$shuff/".$name))
{
$imagequery="INSERT INTO CarImages(CarImageID, ImageName, ImagePath)
VALUES(‘ ’, '$name', 'upload/$name')";
mysql_query($imagequery);
echo 'Image '. $name .' Uploaded Successfully <br>';
}
else
{
echo 'uploading failed';
}
}
$carinfoquery="INSERT INTO Car(CarID, CarName, CarModel, CarImageID)
VALUES('// this value should take its value from first query', '$CarName', '$CarModel', 'CarImageID')";
mysql_query($carinfoquery) or die(mysql_error());
if($carinfoquery)
{
echo '<br><br> The Car Information Insertion was
Successfully <br><br>';
}
else
{
echo '<br><br> Car Insertion Failed';
}
}
答案 0 :(得分:1)
待办事项
mysql_query($imagequery);
$carimageid = mysql_insert_id();
或者为了安全起见,请使用mysql_query资源:
$res = mysql_query($imagequery);
$carimageid = mysql_insert_id($res);
如果你有多个查询并且不想有机会混淆它们,第二种方法很有用。
答案 1 :(得分:0)
不要使用mysql函数使用mysqli
如果你使用mysqli使用
$id = $mysqli->insert_id;
在当前功能中您可以使用
$res = mysql_query($imagequery);
$id = mysql_insert_id($res);
使用此ID在下一个查询中插入。
答案 2 :(得分:0)
您必须在second insert query
之前添加一个查询以检索最后一个条目ID ,因为您没有在第一个查询中指明它,只是让数据库在最后一个条目的基础上处理它(这是因为它是一个自动增量场)
如此更改
mysql_query($imagequery);
<强>在强>
$lastid = mysql_query($imagequery);
$last_entry_id = mysql_insert_id($lastid);
现在您的变量存储在last_entry_id
中,您可以在第二个查询中使用
答案 3 :(得分:0)
获取插入ID
$res = mysql_query($imagequery);
$carimageid = mysql_insert_id();
如果db col CarImageID值为$ carimageid则
$carinfoquery="INSERT INTO Car(CarID, CarName, CarModel, CarImageID)
VALUES('// this is CarID if col is auto_increment ,blank this', '$CarName', '$CarModel', '$carimageid')";
然后使用if($ run_query)而不是if($ carinfoquery)
$run_query = mysql_query($carinfoquery) or die(mysql_error());
if($run_query)
{
echo '<br><br> The Car Information Insertion was
Successfully <br><br>';
}
else
{
echo '<br><br> Car Insertion Failed';
}
更新 表结构可能是
Car(CarID, CarName, CarModel)
CarImages(CarImageID, ImageName, ImagePath,CarID)
答案 4 :(得分:0)
您无需在CarImageID
插入,因为它是自动增量列。
如果你有Warning: mysql_insert_id() expects parameter 1 to be resource, boolean...
这意味着您的INSERT
语句失败,因此请使用die(mysql_error()
查找问题。
$imagequery="INSERT INTO CarImages(ImageName, ImagePath) VALUES('$name', 'upload/$name')";
mysql_query($imagequery) or die(mysql_error());
$id = mysql_insert_id($res);
编辑1:
我认为你的表结构存在问题。汽车可能有多个图像。所以表结构应该是这样的:
Car(CarID, CarName, CarModel)
CarID
是PK并自动增加。其中CarImages(CarID, CarImageID, ImageName, ImagePath)
为FK且CarID
为CarImageID
的{{1}}为自动递增。
您应首先插入CAR
表,然后使用CarID
获取mysql_insert_id()
并将此ID用于INSERT到CarImages
表。