【问题标题】:Result goes blank when reading from textfile and then to insert in mysql从文本文件读取然后插入 mysql 时结果变为空白
【发布时间】:2015-12-04 09:20:58
【问题描述】:

在这里,我想从文本文件中获取记录,然后插入到 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

【问题讨论】:

  • 您正在将一个数组连接成一个字符串...这不起作用。
  • @Salketer:好的..!!那么如何获取该记录并插入到 mysql 中?

标签: php mysql text


【解决方案1】:

发生的情况是您保存了数组中的每一行,但没有保存数据库中的每个数组元素。您可以对 foreach 中的每一行运行一个查询,或者保持这种状态,但连接数组元素以形成一个完整的 INSERT,其中包含许多值,就像我所做的那样。

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,则形成 VALUES(5),(6)

您可能想再次使用它,因为我看到您将第一列存储为键,第二列存储为值,但不要说明您希望每个列用于什么。所以这个当前查询将只使用这些值。

编辑:

为了使事情更容易开始以便您可以进行测试,请改用此代码,它将逐行插入,并使其更容易首先尝试。但请注意,运行 X 查询比只运行一个查询要慢(但不会太多,取决于数量)。

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);

【讨论】:

  • 谢谢..!!你的观点很好,我很感激,但它并没有给出具体的答案..!!
  • 如果您希望我能够更好地回答,请详细说明自己:)
猜你喜欢
  • 2012-05-05
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 2015-07-09
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多