Php 如何从一个查询中获取值并将其分配给另一个查询
我在mysql数据库中有两个表,它们是:Php 如何从一个查询中获取值并将其分配给另一个查询,php,mysql,Php,Mysql,我在mysql数据库中有两个表,它们是: 汽车信息 汽车图像 这两个表值都由一个表单填写。在Car表中,我有一个名为“”CarImageID“的字段,这是一个具有自动递增功能的主键,在images表中,我有相同的字段“”CarImageID“,但FK没有UNIQE索引。我想要的是,每当我按下submit按钮时,第二个查询就会从第一个查询中获取其值。我还创造了他们之间的关系。如何从Imagequery中获取CarImageID并在第二个查询(即CarInfo查询)中使用它 <?php re
”CarImageID“
的字段,这是一个具有自动递增功能的主键,在images表中,我有相同的字段“”CarImageID“
,但FK没有UNIQE索引。我想要的是,每当我按下submit按钮时,第二个查询就会从第一个查询中获取其值。我还创造了他们之间的关系。如何从Imagequery中获取CarImageID并在第二个查询(即CarInfo查询)中使用它
<?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';
}
Do
或者为了安全起见,请使用mysql\u查询资源:
$res = mysql_query($imagequery);
$carimageid = mysql_insert_id($res);
第二种方法很有用,如果你有多个查询并且不想把它们混在一起。不要使用mysql函数使用mysql
如果您使用mysqli,请使用
$id = $mysqli->insert_id;
在当前函数中,您可以使用
$res = mysql_query($imagequery);
$id = mysql_insert_id($res);
使用此id在下一个查询中插入。您必须在第二个插入查询之前添加一个查询,以检索最后一个条目id,因为您在第一个查询中不指示它,而只是让数据库在最后一个条目的基础上处理它(这是因为它是一个自动增量字段)
所以改变吧
mysql_query($imagequery);
在
$lastid = mysql_query($imagequery);
$last_entry_id = mysql_insert_id($lastid);
现在,您的变量存储在last\u entry\u id
中,可以在第二次查询中使用
我还想提醒您,mysql\ucode>函数已被弃用,因此我建议您切换到新项目或进行新项目。获取插入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\u query)而不是if($carinfo query)
您不需要在CarImageID
处插入,因为它是自动递增列。
如果得到警告:mysql\u insert\u id()希望参数1是资源,布尔值…
这意味着您的INSERT
语句失败,因此请使用die(mysql\u 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
是主键和自动递增。CarImages(CarID,CarImageID,ImageName,ImagePath)
哪个CarID
是FK而CarImageID
是自动递增。
您应该首先插入到CAR
表中,然后使用mysql\u INSERT\u id()
获取CarID
,并使用此id插入到CarImages
表中。我收到此错误消息:“警告:mysqli\u query()至少需要2个参数,1个参数在第20行的C:\xampp\htdocs\PropertyImages\index.php中给出,这是因为您没有使用mysqli
作为连接,而是mysql\uu
请直接复制和粘贴,我没有使用mysqli
我将mysqli改回mysql。除此之外,其他错误已删除。警告:mysql\u insert_id()期望参数1是资源,C中给出的布尔值:'我将mysqli改回mysql,其他错误已删除,但此错误除外'警告:mysql_insert_id()期望参数1是资源,C中给出的布尔值:'您是对的,但给出了此错误提示:'无法添加或更新子行:外键约束失败(propertyimage
propertyimages
,约束propertyimages\u ibfk\u 1
外键(PropertyImageID
)引用properties
(PropertyImageID
)在更新级联时删除级联)“我有两个表,一个是属性,第二个是权限图像。请看,您应该先插入到表car
,然后插入到carimages
表。反之亦然。
$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)
$imagequery="INSERT INTO CarImages(ImageName, ImagePath) VALUES('$name', 'upload/$name')";
mysql_query($imagequery) or die(mysql_error());
$id = mysql_insert_id($res);