2011-07-15 14 views
0

挿入クエリにforeachループを使用しています。同時にそれらがdatabseに存在するかどうか、私は価値と一致しています。値が存在する場合、その特定のキーをスキップして、挿入する次のキー値に移動します。再度値が存在するかどうかをチェックし、値がdatavaseに存在しない場合はレコードを保存します。foreachループを使用した挿入クエリの問題

私はこれを行うために以下のアプローチを使用しました。

foreach($inputs as $key => $value) { 
if ($key == 'empty') continue; 
    $check=mysql_query("select * from from t_atc_list where s_title='$key' and r_name='$value'"); 

    if(mysql_num_rows($check)!=0){ continue;  } 
    $result = mysql_query("INSERT into t_atc_list(a_name, s_title, r_name) values('$album','$key', '$value')")or die(mysql_error()); 
    echo "<strong>$key</strong> Singer <strong>$value</strong></br>"; 

} 

注: (1)。重複したエントリであるvalueがすでに存在する場合、値は挿入されます。 (2)。 "mysql_num_rows():与えられた引数が有効なMySQL結果リソースではありません"という警告が表示されます。

+0

あなたは同じタイトル+名前の組み合わせを(だけでなく、コードのこの部分では)必要はありません場合は、一意のインデックスにそれを行うことを検討。 'INSERT IGNORE'または' INSERT ... ON UPDATE KEY UPDATE a_name =? 'を実行するだけで、最初のクエリを完全に削除することができます。また、義務的な[Bobby Tables警告](http://bobby-tables.com/)。 – Amadan

答えて

4

最初のクエリで "from"という単語が2回あると、クエリに無効な構文と戻り値MySQLリソースの代わりにfalse(bool)falseを返します。したがって、mysql_num_rows($ check)はエラーをスローし、if文は常にfalseと評価されます。

変更:

select * from from t_atc_list 

へ:

select * from t_atc_list 
+0

ありがとう....私の間違い.. – Aditii

関連する問題