0

私はmysqlデータベースに次の2つのテーブルを持っています:

  1. 車情報
  2. 車の画像

これらの表の値はどちらも、1 つのフォームで入力されます。Car テーブルには、名前が'CarImageID'自動インクリメントの主キーであるフィールドがあり、images テーブルにも同じフィールド'CarImageID'がありますが、UNIQE INDEX ではない FK があります。私が欲しいのは、送信ボタンを押すたびに、2番目のクエリが最初のクエリから値を取得することです。また、それらの間に関係を作成しました。Imagequery から CarImageID を取得し、CarInfoQuery である 2 番目のクエリで使用するにはどうすればよいですか?

<?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';
          }           

}

4

5 に答える 5

1

行う

  mysql_query($imagequery);
  $carimageid = mysql_insert_id();

または安全のために、mysql_query リソースを使用します。

$res = mysql_query($imagequery);
$carimageid = mysql_insert_id($res);

2 番目の方法は、複数のクエリがあり、それらを混同する可能性を避けたい場合に便利です。

于 2013-04-17T05:53:01.543 に答える
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) 
于 2013-04-17T06:02:12.533 に答える
0

CarImageID自動インクリメント列なので、at を挿入する必要はありません。取得した場合は、ステートメントが失敗したWarning: mysql_insert_id() expects parameter 1 to be resource, boolean... ことを意味するため、問題を見つけるために使用します。INSERTdie(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)これCarIDは FK であり、CarImageID自動インクリメントです。最初にテーブルに INSERT してから、この ID をCAR取得CarIDして INSERT into table に使用する必要があります。mysql_insert_id()CarImages

于 2013-04-17T06:52:47.480 に答える