【问题标题】:PHP: SQL value as filenamePHP:SQL 值作为文件名
【发布时间】:2017-05-30 16:31:35
【问题描述】:

我有这个代码:

    <?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。这可能吗?

【问题讨论】:

    标签: php sql csv filenames fopen


    【解决方案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']
    

    【讨论】:

    • 谢谢。我已经做到了,但下一步似乎更加困难。插入实际日期是这样的:$file = fopen('../files/in/be' . date('Ymd') . '.csv', 'w'); 但相同的格式不适用于“动态”文件名:$file = fopen('../files/in/be' .$rows['filename'] . '.csv', 'w');。有什么建议吗?
    • 您的问题中没有提到date。这完全取决于$rows['filename'] 的实际值是多少。你检查了吗?如果您需要按原样使用该值来成为日期,您应该尝试类似 date($rows['filename']) 。您需要提供更多信息。
    猜你喜欢
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多