0

我编写了以下 PHP 脚本,它将从数据库中提取 Base64 编码的图片并将它们写入文件。它还输出一个 CSV,其中每一行都有序列号、主图片、主要修改日期、额外图片、额外图片修改日期。

<?php
date_default_timezone_set('America/Edmonton');

$serverName = "database";
$connectionInfo = array( "Database"=>"CRM_MSCRM");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn === false )
    {
        echo "Unable to connect.\n\n";
        die( print_r( sqlsrv_errors(), true));
    }
else
    {
        echo "Connected. Selecting trucks...\n\n";
    }

$tsql = "SELECT * FROM CRM_MSCRM.dbo.Trader_Export_Simple";
$stmt = sqlsrv_query( $conn, $tsql);

if( $stmt === false )
    {
        echo "Error executing query.\n\n";
        die( print_r( sqlsrv_errors(), true));
    }

$csvData = array();

while ($row = sqlsrv_fetch_array($stmt))
    {
        $count = 1;
        $mainpicsql = "SELECT * FROM CRM_MSCRM.dbo.TruckImages WHERE Serial = '".$row[0]."' AND MainPic = 1";
        $mainpicstmt = sqlsrv_query( $conn, $mainpicsql);
        while ($mainpicrow = sqlsrv_fetch_array($mainpicstmt))
            {
                $truck = $mainpicrow[1];
                $mainfilename = $truck ."-". $count . ".png";
                file_put_contents($mainfilename, base64_decode($mainpicrow[0]));
                $mainpicdate = $mainpicrow[3]->format("d/m/Y h:m:s");
                $mainfilename = "http://images.website/images/".$mainfilename;
                echo $mainpicdate."\n";
            }

        $picsql = "SELECT * FROM CRM_MSCRM.dbo.TruckImages WHERE Serial = '".$row[0]."' AND MainPic = 0";
        $picstmt = sqlsrv_query( $conn, $picsql);
        $extrapicsdate = "";
        $filenames = "";

        while ($picrow = sqlsrv_fetch_array($picstmt))
            {
                $count++;
                $filename = $picrow[1] ."-". $count . ".png";
                file_put_contents($filename, base64_decode($picrow[0]));
                $picdate = $picrow[3]->format("d/m/Y h:m:s");
                $filenames .= "http://images.website/images/".$filename.";";
                $extrapicsdate .= $picdate.";";
            }

        $filenames = rtrim($filenames, ";");
        $extrapicsdate = rtrim($extrapicsdate, ";");
        echo $filenames."\n";
        echo $extrapicsdate."\n";
        if ($truck != "") {
            $csvData[] = array($truck, $mainfilename, $mainpicdate, $filenames, $extrapicsdate);
        }

        if ($filenames != "")
            {
                $filenames = "";
            }        
        if ($extrapicsdate != "")
            {
                $extrapicsdate = "";
            }

        echo "Next truck...\n\n";
        $truck = "";
        $mainfilename = "";
        $mainpicdate = "";
    }
    $fp = fopen('file.csv', 'w');
    foreach ($csvData as $fields) {
        fputcsv($fp, $fields);
    }
    //print_r($csvData);
sqlsrv_free_stmt( $stmt);
sqlsrv_free_stmt( $picstmt);
sqlsrv_close( $conn);
?>

我想从该文件的每一行中获取 $truck,并在另一个 CSV 中搜索包含该 $truck 的行,并将此 CSV 中匹配行的列附加到该行。冲洗并重复此 CSV 文件中的所有行

在几年没有使用 PHP 之后,我花了一段时间才完成这项工作,所以我的头有点痛。有人想在这部分指出我正确的总体方向吗?谢谢您的帮助!

4

0 回答 0