2013-04-17 157 views
0

我在mysql的数据库中的两个表分别是:如何从一个查询中获取值,并将其分配给另一个

  1. 汽车资讯车
  2. 图片

两者的这些表值由一个表单填充。在Car表中,我有一个名字为'CarImageID'的字段,它是一个自动递增的主键,在图像表中我有相同的字段'CarImageID',但FK的NOT 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'; 
      }   

}

回答

1

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

或者是安全的,使用的mysql_query资源:

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

第二种方法是有用的,如果你有多个querys和Don”不想碰上混合起来的机会。

0

不要使用MySQL的函数使用的mysqli

,如果你使用的mysqli使用

$id = $mysqli->insert_id; 

在当前的功能可以使用

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

使用这个号码,在明年查询插入。

+0

我把mysqli改回mysql除了这个以外,其他的错误都被移除了警告:mysql_insert_id()期望参数1是资源,在C中给出布尔值:' – user2279037

+0

检查我更新的答案。 –

0

你有second insert query之前添加查询检索最后一个条目ID因为你不表示它在第一个查询,只是让数据库处理它最后一项的基础上(这是因为它是一个自动增量场)

所以改变

mysql_query($imagequery); 

$lastid = mysql_query($imagequery); 
$last_entry_id = mysql_insert_id($lastid); 

现在你已经存储在last_entry_id您的变量,你可以在第二个查询使用

我想还记得你,mysql_功能已被弃用,所以我会建议你切换到mysqliPDO新项目。

+0

我收到这个错误消息:'警告:mysqli_query()期望至少有2个参数,1在C:\ xampp \ htdocs \ PropertyImages \ index.php中给出的第20行' – user2279037

+0

这是因为你没有使用'mysqli'作为连接,但'mysql_'请直接拷贝和粘贴,我没有使用'mysqli' – Fabio

0

得到插入ID

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

如果DB山坳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)不是,如果($ 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) 
+0

我改回mysqli到mysql除了这一个删除的其他错误警告:mysql_insert_id()期望参数1是资源, C:' – user2279037

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)其中CarID为FK,CarImageID为自动递增。 您应该先插入CAR表,然后获得CarIDmysql_insert_id()并使用此ID为INSERT到CarImages表。 '

+0

你是对的,但给这个错误按摩:'不能添加或更新子行:外键约束失败('propertyimage'.'propertyimages',CONSTRAINT'propertyimages_ibfk_1' FOREIGN KEY('PropertyImageID')REFERENCES'属性'('PropertyImageID')ON DELETE CASCADE ON UPDATE CASCADE)' – user2279037

+0

其实这是我的真实代码 – user2279037

+0

我有两个表,一个是属性,一个是poperties ima ges – user2279037

相关问题