2011-07-11 18 views
0
$result = mysql_query("SELECT FROM table WHERE job_id = '$key'") or die("Error: ". mysql_error(). " with query ". $query); 
    $num_rows = mysql_num_rows($result); 
    if($num_rows > 0) { 
     mysql_query("UPDATE table SET row = '$value' WHERE job_id = '$key'"); 
     }else{ 
     mysql_query("INSERT INTO table SET row = '$value', job_id = '$key'"); 
     } 

データベースを作成したくない場合は、データベースに既存のレコードがあるかどうかを確認する必要があります。私は私が手にこのかかわらず実行するたび:MySQL番号の行のエラー

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in my/web/directory/index.php on line 147 

は、私はこのウェブサイト上の既存のポストを通して見てきたが、それらのほとんどは彼の構文と間違って何かを持つユーザーを伴います。 mysql_query();を忘れるなど。私が構文の権利を持っていると思っている限り、私はまだエラーが出ています。どんな助け?

答えて

5

最初のクエリが正しくありません。
また、挿入物が正しくありません。
はこれを試してみてください:

$result = mysql_query("SELECT * FROM table WHERE job_id = '$key'") or die("Error: ". mysql_error(). " with query ". $query); 
    $num_rows = mysql_num_rows($result); 
    if($num_rows > 0) { 
     mysql_query("UPDATE table SET row = '$value' WHERE job_id = '$key'"); 
     }else{ 
     mysql_query("INSERT INTO table VALUES ('$value', '$key')"); 
     } 

またINSERT...ON DUPLICATE KEY UPDATEを使用することができます。

+0

私が間違っていたかを把握しようとしている45分に近く過ごし、あなたは分で、それを解決しました。ありがとう! – Chris

0

MySqlには、行がまだ存在しない場合は作成する構文があり、存在する場合は更新する構文があります。データベースにクエリの半分の量を行うと、いくつかのスレッドがaccidentaly一回のレースに比べ行以上を追加することの危険性はありませんので、これは通常望ましいだろう

$result = mysql_query("INSERT INTO table (job_id, row) 
    VALUES ('$key', '$value') ON DUPLICATE KEY UPDATE row='$value'; 

:あなたのケースでは、このような何かを行うことができます調子。

あなたはで詳細を読むことができます:

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html