2017-07-02 8 views
0

私はAndroidデベロッパーでPHP APIを使用しています。私は要件として自分のテーブルを更新する1つのクエリを作るために働いています。プライマリIDが1 ... 2 ... 3 ... 4などのような連続した番号を持つ場合、このクエリはうまくいきます。1 ... 2 ... 4 ... 1 ... 2 ...まで更新していますが、このようなシリアル番号が見つからない行のために働いていません。この場合、それは行4プライマリキーにシリアル番号がない場合、MySQLiクエリが機能しない

のために働いていない私のクエリは

$sql = mysqli_query($mysqli, "SELECT _quid FROM tbl_quotes"); 
$num_rows = mysqli_num_rows($sql); 
for ($x = 1; $x <= $num_rows; $x++) { 
    $randomnumbershare = (rand(10, 50)); 
    $randomnumberlike = (rand(10, 50)); 
    $qu_time = getDatetimeNow(); 
    $results = mysqli_query($mysqli, " 
     UPDATE tbl_quotes SET 
     qu_status=1, 
     qu_like=$randomnumberlike, 
     qu_share=$randomnumbershare, 
     qu_favorite=0, 
     qu_time='$qu_time' 
      where _quid=$x 
       ORDER BY _quid ASC 
     "); 

以下のように誰もが私が行方不明ですし、どのように私はそれを修正することができますいただきました!私を提案してくださいすることができますか?

答えて

0

あなたはこのように、テーブルのすべてのIDをループするために、代わりにforループの、whileループを使用する必要があります。

$sql = mysqli_query($mysqli,"SELECT _quid FROM tbl_quotes"); 
while($result = mysqli_fetch_array($sql)){ 
    $randomnumbershare = (rand(10,50)); 
    $randomnumberlike = (rand(10,50)); 
    $qu_time = getDatetimeNow(); 
    $results = mysqli_query($mysqli,"UPDATE tbl_quotes SET qu_status=1, qu_like=$randomnumberlike,qu_share=$randomnumbershare,qu_favorite=0, qu_time='$qu_time' where _quid=".$result['_quid']." ORDER BY _quid ASC"); 
} 
+0

ハロー先生!それはうまく動作します....しかし、$ results = mysqli_query($ mysqli、 "UPDATE tbl_quotes SET qu_status = 1、qu_like = $ randomnumberlike、qu_share = $ randomnumbershare、qu_favorite = 0、qu_time = '$ qu_time' where _quid ="です。 $ result ['_quid']。 "ORDER BY _quid ASC");たとえ私がLIMIT 1を設定していても、すべての行を更新しています....そこに何かがありませんか?私の質問には申し訳ありません。どうもありがとう ! –

+0

@PremSharma実際には、テーブルのすべてのIDをループしているので、 'UPDATE'クエリに' ORDER BY'と 'LIMIT'節がある点はありません。 1つの行だけを更新したい場合は、最初に 'while'ループを使用しないでください。ただ一つの' UPDATE'クエリを持ち、更新したい 'WHERE'節の特定の行のidを指定するだけです。 –

関連する問題