2016-01-22 22 views
1

我將所有的鍵都存儲在數組$ 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不存在的情況下執行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()); 

} 
} 
+0

是'代碼'在數據庫中的'鍵'列嗎? – RamRaider

+0

您不需要先檢查 – Strawberry

回答

1

你必須使用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是depricated而使用的mysqli或PDO

+0

謝謝。我真的需要更多地瞭解循環。你有我能讀的資源嗎? – michelle

+0

一旦它允許我接受它。 – michelle

+0

閱讀manuall http://php.net/manual/en/control-structures.for.php – Saty

1

如果您有鍵控列,則可以使用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}'");  
    } 
?> 
相關問題