代码之家  ›  专栏  ›  技术社区  ›  LucyTurtle

PHP CSV上传到MySQL不做任何事情

  •  0
  • LucyTurtle  · 技术社区  · 8 年前

    我写了一个脚本来下载一个google表单,然后把这个表单上传到我的dadabase。

    除了数据正在上传到我的数据库之外,一切看起来都很好。

    我导航到文件夹,然后运行以下命令:

    php -f updatedatabase.php
    

    这是我编写的脚本(googel表的键是用实际的键填充的——我测试了链接,它正在工作,出于安全原因,数据库凭证已经被标记出来):

    <?php
        $datas = file_get_contents("https://docs.google.com/spreadsheets/d/1fOe2fz8PmYzTWU7l_KboHdv0zP0KZkhcJUTGJDUXaKk/gviz/tq?tqx=out:csv&sheet=All%20Items&range=A:G");
        $datas = explode( PHP_EOL, $datas );
        //FORMAT ("Name1", "Image1", "Description1", "Rarity1", "Price1", "Status1", "Store1"), ("Name2", "Image2", "Description2", "Rarity2", "Price2", "Status2", "Store2").....
    
        // Info to connect to the database
            $servername = ".com";
            $dbusername = "";
            $password = "!19";
            $dbname = "";
    
            $con=mysqli_connect( $servername, $dbusername, $password, $dbname );
    
        mysqli_query( $con, "TRUNCATE TABLE Items" );
    
        foreach ( $datas as $data ) {
            echo $data . "\n";
            mysqli_query( $con, "INSERT INTO Items (Name,Image,Description,Rarity,Price,Status,Store) VALUES " . $data );
        }
    
        mysqli_close($con);
    ?>
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Jared Chu    8 年前

    你的 data 字符串格式不正确:

    $csvData = file_get_contents("https://docs.google.com/spreadsheets/d/1fOe2fz8PmYzTWU7l_KboHdv0zP0KZkhcJUTGJDUXaKk/gviz/tq?tqx=out:csv&sheet=All%20Items&range=A:G");
    $lines = explode(PHP_EOL, $csvData);
    $array = array();
    foreach ($lines as $line) {
        $array[] = str_getcsv($line);
    }
    
    // format the data string
    // work with PHP7.0 or later
    $datas = array_map(function ($data) {
        $dataString = implode("','", $data);
        return "('$dataString')";
    }, $array);
    
    // remove the head line
    array_shift($datas);
    
    // Info to connect to the database
    $servername = "192.168.10.10";
    $dbusername = "homestead";
    $password = "secret";
    $dbname = "gooledoc";
    
    $con = mysqli_connect($servername, $dbusername, $password, $dbname);
    
    mysqli_query($con, "TRUNCATE TABLE Items");
    
    foreach ($datas as $data) {
        echo $data . "\n";
        $result = mysqli_query($con, "INSERT INTO `Items` (`Name`,`Image`,`Description`,`Rarity`,`Price`,`Status`,`Store`) VALUES " . $data);
        var_dump($result);
    }
    
    mysqli_close($con);