从csv文件中获取值,查看数据库,获取与该值匹配的记录的id

时间:2012-04-04 10:29:51

标签: php mysql

好的伙计们,这对你来说很有趣。

所以我们的后台系统包含所有邮轮票价,我们制作了一个漂亮的小脚本,允许后台系统将票价输出导入网站。

这是一个简洁的脚本,除了......后台系统导出巡航代码,例如P210和网站的数据库有一个票价表,其中包含每个票价作为记录,通过'cruise_id'连接到相关的邮轮

所以巡航表就是这样的

id标题代码离开......等等

,票价表就像这样

id cruise_id票价优惠等等

在网站上运行良好,但后台导出并不知道网站上游轮的唯一ID。

在我们上传csv文件之后,在插入之前,是否有可能使用代码从巡航表中查找cruise_id,并在插入查询中使用它?

到目前为止,这是上传脚本

<?php
 require_once('includes/connection.php');
 if(isset($_POST['submit']))
   {
     $filename=$_FILES['filename']['tmp_name'];
     $handle = fopen("$filename", "r");
     while (($data = fgetcsv($handle, 100000, ",")) !== FALSE)
     {

       $import="INSERT into fares_usa(cruise_id, active, type, category, placement, deck, fare, offered, status, sortorder) 
       values('".mysql_real_escape_string($data[0])."',
       '".mysql_real_escape_string($data[1])."',
       '".mysql_real_escape_string($data[2])."',
       '".mysql_real_escape_string($data[3])."',
       '".mysql_real_escape_string($data[4])."',
       '".mysql_real_escape_string($data[5])."',
       '".mysql_real_escape_string($data[6])."',
       '".mysql_real_escape_string($data[7])."',
       '".mysql_real_escape_string($data[8])."',
       '".mysql_real_escape_string($data[9])."')";
       mysql_query($import, $connection) or die(mysql_error());
     }
     fclose($handle);
     print "Import done";
   }
   else
   {

      print "<form enctype='multipart/form-data' action='fileupload.php' method='POST'>";
      print "Select file to import:";
      print "<input type='file' name='filename' size='20'>";
      print "<input type='submit' name='submit' value='submit'></form>";
   }
   ?>

我希望我已经解释好了......

Rich:)

2 个答案:

答案 0 :(得分:0)

嗯,之前的触发器不会做这个伎俩吗?触发“在每行上插入xy之前”,然后检查“如果new.cruise_id为null,则选择进入cruise_id”。也许您必须为代码添加额外的列(P120),因为代码不是像ID那样的数字。为了节省空间,您可以在查找id后在同一个触发器中将代码列值设置为null。

单独的加载程序表或可插入的视图(也许)也可以是一个选项。

答案 1 :(得分:0)

修复它......这是代码

<?php
 require_once('includes/connection.php');
 if(isset($_POST['submit']))
   {
     $filename=$_FILES['filename']['tmp_name'];
     $handle = fopen("$filename", "r");
     while (($data = fgetcsv($handle, 100000, ",")) !== FALSE)
     {
         $lookup_cruise = mysql_real_escape_string($data[0]);

    $query_cruiseid = "SELECT id FROM cruises WHERE code = '{$lookup_cruise}'";
    $get_cruiseid = mysql_query($query_cruiseid, $connection);
        $cruise_id = mysql_fetch_assoc($get_cruiseid);


       $import="INSERT into fares_usa(cruise_id, active, type, category, placement, deck, fare, offered, status, sortorder) 
   values('".mysql_real_escape_string($cruise_id['id'])."',
   '".mysql_real_escape_string($data[1])."',
   '".mysql_real_escape_string($data[2])."',
   '".mysql_real_escape_string($data[3])."',
   '".mysql_real_escape_string($data[4])."',
   '".mysql_real_escape_string($data[5])."',
   '".mysql_real_escape_string($data[6])."',
   '".mysql_real_escape_string($data[7])."',
   '".mysql_real_escape_string($data[8])."',
   '".mysql_real_escape_string($data[9])."')";
   mysql_query($import, $connection) or die(mysql_error());
     }
     fclose($handle);
     print "Import done";
   }
   else
   {

  print "<form enctype='multipart/form-data' action='fileupload.php' method='POST'>";
  print "Select file to import:";
  print "<input type='file' name='filename' size='20'>";
  print "<input type='submit' name='submit' value='submit'></form>";
   }
  ?>