Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从一个查询中获取值并将其分配给另一个查询_Php_Mysql - Fatal编程技术网

Php 如何从一个查询中获取值并将其分配给另一个查询

Php 如何从一个查询中获取值并将其分配给另一个查询,php,mysql,Php,Mysql,我在mysql数据库中有两个表,它们是: 汽车信息 汽车图像 这两个表值都由一个表单填写。在Car表中,我有一个名为“”CarImageID“的字段,这是一个具有自动递增功能的主键,在images表中,我有相同的字段“”CarImageID“,但FK没有UNIQE索引。我想要的是,每当我按下submit按钮时,第二个查询就会从第一个查询中获取其值。我还创造了他们之间的关系。如何从Imagequery中获取CarImageID并在第二个查询(即CarInfo查询)中使用它 <?php re

我在mysql数据库中有两个表,它们是:

  • 汽车信息
  • 汽车图像
  • 这两个表值都由一个表单填写。在Car表中,我有一个名为“
    ”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);