插入存储在数组中的所有条目(for 语句)


inserting all entries stored in an array (for statement)

我把所有的密钥都存储在数组$addkeys中(密钥的总数总是在变化)。var_dump($addkeys)输出:

Arrayarray(9) { [0]=> string(17) "11111-11111-11111" [1]=> string(17) "22222-22222-22222" [2]=> string(17) "33333-33333-33333" [3]=> string(17) "44444-44444-44444" [4]=> string(17) "55555-55555-55555" [5]=> string(17) "66666-66666-66666" [6]=> string(17) "77777-77777-77777" [7]=> string(17) "88888-88888-88888" [8]=> string(17) "99999-99999-99999" }

如果它们尚不存在,我想将它们中的每一个插入到数据库中。我了解如何检查字符串中的单个现有键并在尚不存在时执行 INSERT,但增量循环让我感到困惑。任何帮助将不胜感激。我知道人们可能会建议使用 PDO 进行 mysql 查询,但请忽略。

我的代码:

for ($i = 0; $i < count($addkeys); $i++) {
// check each key in $addkeys to see if it exists already in the database to prevent a duplicate entry
$result = mysql_query("SELECT code FROM codes WHERE code = '$addkeys'")
or die(mysql_error());
$row = mysql_fetch_array($result, MYSQL_NUM);
$addkeys = $row[0];
if(!isset($addkeys)) {
// entry doesn't exist insert the key
$result = mysql_query("INSERT INTO codes (code, title) VALUES ('$addkeys', 'sample title')")
or die(mysql_error());
}
}

您必须使用 mysql_num_rows 来检查是否已存储在数据库中的数据。 并且您在查询中使用直接数组addkeys您必须像addkeys[$i]一样使用它

你的代码将是

for ($i = 0; $i < count($addkeys); $i++) {
// check each key in $addkeys to see if it exists already in the database to prevent a duplicate entry
    $result = mysql_query("SELECT code FROM codes WHERE code = '$addkeys[$i]]'") or die(mysql_error());
    $rows = mysql_num_rows($result);
    if ($rows < 1) {
// entry doesn't exist insert the key
        $insert = mysql_query("INSERT INTO codes (code, title) VALUES ('$addkeys[$i]]', 'sample title')") or die(mysql_error());
    }
}

注意:- mysql 被弃用,而是使用 mysqli 或 PDO

如果你有一个键控列,你可以使用on duplicate key update语法

<?php
    foreach( $addkeys as $key ){
        $title='sample title';
        $result = mysql_query("INSERT INTO codes (`code`, `title`) VALUES ('{$key}', '{$title}')
            on duplicate key update `code`={$key}, `title`='{$title}'");    
    }
?>