PHP和MYSQL:插入外键

时间:2012-09-25 14:54:52

标签: php mysql

我有两张桌子,图片和类别。

图像的类别是1:M关系(许多图像可以有1个类别)。

我想从文件系统将图像插入数据库,在路上动态分配外键类别。

我想用一个插件实现这一点,但似乎我需要为每个类别的图像插入一个插件,如下所示:

 $allimages = scandir('./images/all_images/');
 $category1= scandir('./images/category1/');
 $category2= scandir('./images/category2/');

//CATEGORY 1: 
for($x=0; $x<count($category1); $x++)
{   
if(!is_dir(IMAGES_PATH . $category1[$x]))   
{  
  INSERT INTO images (imgid, imgname, categoryfk) VALUES ('$x', '$category1', 1)

//CATEGORY 2: 
for($x=0; $x<count($category2); $x++)
{   
if(!is_dir(IMAGES_PATH . $category2[$x]))   
{  
  INSERT INTO images (imgid, imgname, categoryfk) VALUES ('$x', '$category2', 2)

//CATEGORY 3: 
for($x=0; $x<count($allimages); $x++)
{   
if(!is_dir(IMAGES_PATH . $allimages[$x]))   
{  
  INSERT INTO images (imgid, imgname, categoryfk) VALUES ('$x', '$allimages', 3)

这真的是我能做到这一点的唯一方法吗?我可以在单个插入和循环中实现此类别分配吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

此外,您还可以通过插入查找结果来动态地查找外键,例如:查找“类别1”的外键,然后插入引用此类别的新图像:

INSERT INTO Images(imgId, imgname, categoryFk)
   SELECT 9876, 'photo1.jpg', cat.categoryId
   FROM Category cat
   WHERE cat.categoryName = 'Category 1';

SQLFiddle here

答案 1 :(得分:2)

我不确定我是否理解正确,但据我所知,这应该是这样做的:

INSERT INTO images 
   (imgid, imgname, categoryfk) 
VALUES 
   ('$x', '$category1', 1),
   ('$x', '$category2', 2),
   ('$x', '$allimages', 3)