2017-01-15 21 views
1

我有这样的代码:PHP:SQL值作为文件名

<?php 
    $servername = "Jarvis"; 
    $username = "TonyStark"; 
    $password = "iLoveIronMan"; 
    $dbname = "StarkCompany"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "SELECT o.order_id, o.customer_id, op.quantity, op.model FROM oc_order o INNER JOIN oc_order_product op ON o.order_id = op.order_id INNER JOIN oc_product p ON op.product_id = p.product_id WHERE o.order_status_id = 2 AND p.location = 1 ORDER BY o.order_id, op.model"; 

    $file = fopen('../files/in/filename.csv', 'w'); 

    if ($rows = mysqli_query($conn, $sql)) 
    { 

     while ($row = mysqli_fetch_assoc($rows)) 
     { 
      fputcsv($file, $row, ';'); 
     } 

     mysqli_free_result($rows); 
    } 

    mysqli_close($conn); 

    fclose($file); 
    ?> 

现在:我如何可以采取例如表o.order_id的SQL值,并使用该值对我的名?文件名应该是example(o.order_id).csv。这可能吗?

回答

1

你可以让你的生活被命名值这样简单:

$sql = "SELECT o.order_id as filename, o.customer_id, op.quantity, op.model FROM oc_order o INNER JOIN oc_order_product op ON o.order_id = op.order_id INNER JOIN oc_product p ON op.product_id = p.product_id WHERE o.order_status_id = 2 AND p.location = 1 ORDER BY o.order_id, op.model"; 

那么当你处理行,你可以使用

$rows['filename'] 
+0

谢谢。我已经做到了,但下一步似乎更加困难。插入实际日期如下所示:'$ file = fopen('../ files/in/be'。date('Ymd')。'.csv','w');'但是相同的格式不会为“动态”文件名工作:'$ file = fopen('../ files/in/be'。$ rows ['filename']。'.csv','w');'。任何建议? – 27eleven

+0

在你的问题中没有提到'日期'。这一切都取决于'$ rows ['filename']'的实际值是什么。你检查了吗?如果你需要使用这个值,那么为了成为一个日期,你应该尝试'date($ rows ['filename'])''。你需要提供更多信息。 – RST