2

コード スニペットは次のとおりです。

$check = mysql_query("SELECT occurrence_number FROM occurrence WHERE word_id = '$word_id' AND page_id = '$page_id'");

$array_row = mysql_fetch_array($check);
if($array_row['occurrence_number']){
   mysql_query("UPDATE occurrence SET occurrence_number = occurrence_number +1  WHERE word_id = '$word_id'"); 
   print "Updating";
}else{
   mysql_query("INSERT INTO occurrence (word_id,page_id) VALUES ($word_id,$page_id)");
   print "Indexing: $cur_word<br>";
}

クエリで実行したいこと:

表にとoccurrenceの行が存在する場合、その行のその列に 1 を追加して更新します。word_id ='$word_id'page_id = '$page_id'occurrence_number

このクエリを実行したときに得られるもの:

コードはif節に入りません。コードを実行するたびに、同じword_id, page_id, のデフォルト値occurrence_number( に設定されている0) と occurrence_id( 自動インクリメントおよび主キー ) で新しい行が生成されます。

4

4 に答える 4

1

is_numeric () のように試してください

if(is_numeric($array_row['occurrence_number'])){
     mysql_query("UPDATE occurrence SET occurrence_number = occurrence_number +1  WHERE word_id = '$word_id'"); 
     print "Updating";
}else{
     mysql_query("INSERT INTO occurrence (word_id,page_id) VALUES ($word_id,$page_id)");
     print "Indexing: $cur_word<br>";
}

または、単に次のように試すことができます

if($array_row['occurrence_number'] || $array_row['occurrence_number'] == '0'){

そして主なことは、whileループでmysql_fetch_arrayを試してみると、すべての相対レコードを通過するか、1つのレコードのみを返すことです

while($array_row = mysql_fetch_array($check)) {
    //Put here the code...if else 
}

また、廃止されているため、mysql_* 関数を使用しないでください。代わりに、 mysqli _* またはPDOステートメントを使用できます。

于 2013-06-11T07:12:33.633 に答える
1

これは、MYSQL が複数の行を返すためです。mysql_fetch_arrayの代わりにmysql_fetch_rowを使用してみてください。

または、次のようにします。

while($my_fetch_var = mysql_fetch_array($check))
{ your if clause }

PS:また、何行あるかを確認してみてください:

echo count($array_row);
于 2013-06-11T07:14:45.717 に答える
0

row実際の値を確認するのではなく、存在するかどうかを確認します

$check = mysql_query("SELECT occurrence_number FROM occurrence WHERE word_id = '$word_id' AND page_id = '$page_id'");
if($array_row = mysql_fetch_array($check))
{
    mysql_query("UPDATE occurrence SET occurrence_number = occurrence_number +1  WHERE word_id = '$word_id'"); 
   print "Updating";
}else{
   mysql_query("INSERT INTO occurrence (word_id,page_id) VALUES ($word_id,$page_id)");
   print "Indexing: $cur_word<br>";
}

mysql_*関数は非推奨であることに注意してくださいmysqliPDO

于 2013-06-11T07:15:25.883 に答える