Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从文本文件读取然后插入mysql时,结果变为空白_Php_Mysql_Text - Fatal编程技术网

Php 从文本文件读取然后插入mysql时,结果变为空白

Php 从文本文件读取然后插入mysql时,结果变为空白,php,mysql,text,Php,Mysql,Text,在这里,我想从文本文件中获取记录,然后插入mysql数据库。 我得到的结果是空白的。 那么,我的代码是对还是错 $local_csvfile_path = $_SERVER['DOCUMENT_ROOT'] . '/test_demo/magento_prd'; $filename = $local_csvfile_path . "/orderitems100081669.txt"; if ($dh = opendir($local_csvfile_path)) { $cnt = 0

在这里,我想从文本文件中获取记录,然后插入mysql数据库。 我得到的结果是空白的。 那么,我的代码是对还是错

$local_csvfile_path = $_SERVER['DOCUMENT_ROOT'] . '/test_demo/magento_prd';
$filename = $local_csvfile_path . "/orderitems100081669.txt";

if ($dh = opendir($local_csvfile_path)) {

    $cnt = 0;
    while (($lfile = readdir($dh)) !== false) {

        if ($lfile != "." && $lfile != ".." && $lfile != basename($_SERVER["SCRIPT_FILENAME"])) {
            $file = fopen($filename, "r");


            if ($file) {

                $size = filesize($filename);

                if ($size) {

                    $csvcontent = fread($file, $size);

                    fclose($file);
                    $output = explode("\n", $csvcontent);

                    foreach($output as $line) 
                    {
                        $var = explode('\t', $line, 2);
                        $arr[$var[0]] = $var[1];
                    }

                    print_r($arr);

                    $sql = mysql_query('INSERT INTO tbl_order_details(orderdet_id) VALUES ("'.$arr.'")');

                }
            } else {
                fclose($file);
            }
        }
    }
}
和我的文本文件代码:

order_id    orderdet_productsku orderdet_iscase orderdet_qty    item_sold_price
100081669   BS8FTX1                    N               1                 2.99

发生的情况是,您正在保存数组中的每一行,但没有保存数据库中的每个数组元素。您可以对foreach中的每一行运行一个查询,或者像我一样将数组元素连接起来,形成一个包含许多值的完整插入

foreach($output as $line) 
{
    $var = explode('\t', $line, 2);
    $arr[$var[0]] = $var[1];
}

print_r($arr);

$sql = mysql_query('INSERT INTO tbl_order_details(orderdet_id) VALUES ("'.implode('),(',$arr).'")');
基本上,内爆将在每个元素之间添加
),(
。因此,如果存储的值为5和6,则形成
值(5)、(6)

您可能想再次使用它,因为我看到您正在将列1存储为键,将列2存储为值,但不说明您希望每个列用于什么。因此当前查询将只使用这些值

编辑:

为了使开始测试更简单,请使用此代码,它将一行一行地插入,并使首先尝试更容易。但请注意,运行X查询比只运行一个查询慢(但不会太多,取决于数字)


您正在将数组连接到字符串中…这无法工作。@Salketer:好的..!!那么如何才能获取该记录并将其插入mysql?谢谢..!!您的观点很好,我很感激,但它没有给出具体的答案..!!如果您想让我回答得更好,请详细解释:)
foreach($output as $line) 
{
    $var = explode('\t', $line, 2);
    $arr[$var[0]] = $var[1];
    $sql = mysql_query('INSERT INTO tbl_order_details(orderdet_id) VALUES ("'.$var[1].'")');
}

print_r($arr);