【问题标题】:Insert an array in the database在数据库中插入一个数组
【发布时间】:2014-10-11 08:10:48
【问题描述】:

我想在数据库中插入一个数组。阵列可以随时更改。我想要数据库中的不同行。

我的代码:

$var = file_get_contents("test2.txt");
   $test = preg_replace('/\\\\/', '', $var);
   $poep = explode(" ", $test);

是的,没有数据库连接,因为我想知道如何“拆分”数组以将其插入数据库。

我试过这个:

foreach($poep as $row) {
    $row   = $mysqli->real_escape_string($row);
    if($mysqli->query("insert into data('array') VALUES ($row)") == false){
        echo 'Doesnt works!';
    }

它返回'Doesnt works',所以我认为查询有问题?

【问题讨论】:

  • 你想要数据库中有不同的行还是一行?
  • 我想要数据库中有不同的行。
  • 你能 var_dump $poep 并显示一些来自 test2.txt 的样本数据吗?在我看来,您的代码应该可以解决问题,假设文件的内容是空格分隔的
  • @RoelHarbers 这样说我可以理解
  • 只需将其保存为 JSON 或 CSV(逗号分隔值)格式

标签: php mysql arrays database


【解决方案1】:

@NadirDev 你好。假设您正在使用 Core PHP 编程。按空格分解字符串后,运行 foreach 循环,然后插入单独的行。看看这个粗略的代码来了解一下:

foreach($poep as $row) {
    // $row now contains one word. Add that in database.
    $row   = mysql_real_escape_string($row);
    $query = mysql_query("insert into tableName('fieldName') VALUES ($row)");
}

【讨论】:

  • 推荐那些古老的、已弃用的mysql_*函数?
  • 从现在开始始终使用 PDO @NadirDev 和/或切换到更好的数据安全框架。
  • 不起作用..它不会在我的数据库中添加任何内容。
  • @NadirDev 是的,从 PHP 5.5 开始,它们已被弃用。这就是为什么我要告诉你对特定的 DB 类使用 PDO。
  • 这很好。这个答案的本质是:使用foreach 循环遍历数组,并使用您选择的数据库库在循环中插入单个项目。
【解决方案2】:

这是我写的一些代码。它处理一个 CSV 文件并将单独的行存储到一个 db 表中(区别只是你有一个 TXT 文件)。它以 250 行为一组进行 m​​ysql 插入。希望对你有帮助!

// read all input rows into an array
echo "Processing input..<br /><br />";
$row = 0;
$input = array();
if (($handle = fopen($file['tmp_name'], "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
        $num = count($data);
        for ($c=0; $c < $num; $c++) {
            $input[$row][] = addslashes($data[$c]);
        }

        $row++;
    }
    fclose($handle);
}

$count = 0;
$q = "INSERT INTO `inputs` (`keyword`, `percent`, `link`, `added_on`) VALUES ";

foreach ($input as $inp) {
    $q .= "('" . addslashes($inp[0]) . "', '" . addslashes($inp[1]) . "', '" . addslashes($inp[2]) . "', '" . date('Y-m-d H:i:s') . "'), ";
    $count++;

    if ($count >= 250) {
        $q = substr($q, 0, -2);
        $q = mysqli_query($con, $q);

        $q = "INSERT INTO `inputs` (`keyword`, `percent`, `link`, `added_on`) VALUES ";
        $count = 0;
    }
}

if ($count > 0) {
    $q = substr($q, 0, -2);
    $q = mysqli_query($con, $q);
}

echo "Successfully added " . count($input) . " rows to the input list.";

【讨论】:

    猜你喜欢
    • 2011-09-30
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多