0

だから私は単一のパラメータに基づいてテーブルを更新しようとしています:

dateEntered フィールドは空白にする必要があります。

そして、ランダムに 50 行を選択し、空白の ownerID フィールドを「Tester」に更新したいと考えています。

ここに私が持っているものがあります:

<?php
include("includes/constants.php");
include("includes/opendb.php");



$query = "SELECT * FROM contacts WHERE dateEntered='' ORDER BY RAND() LIMIT 50";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_assoc($result)){
        $firstid = $row['id'];

        $query2 = mysql_query("UPDATE contacts 
                        SET ownerID = 'Tester' 
                   WHERE id = '$firstid'");

        $result2 = mysql_query($query2) or die(mysql_error());

        }

?>

単一のレコードを更新して終了し、次のようになります。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1

レコードを選択する最初の部分は正常に機能し、その query2 は 50 件すべてのレコードを更新するのではなく、1 件だけを更新します。多分私はこれを間違って書いています。

4

2 に答える 2

2

mysql_query は 1 回だけ必要です

    $query2 = mysql_query("UPDATE contacts 
                    SET ownerID = 'Tester' 
               WHERE id = '$firstid'");

    $result2 = mysql_query($query2) or die(mysql_error());

    $result2 = mysql_query("UPDATE contacts 
                    SET ownerID = 'Tester' 
               WHERE id = '$firstid'");
于 2012-05-25T19:37:42.160 に答える
1

これらの回答は的確なので、追加情報と提案のみを追加します。初めて mysql にクエリを実行するとき、$query1 は結果リソースに設定されます。

   $query1 = mysql_query("UPDATE contacts SET ownerID = 'Tester' WHERE id = '$firstid'");

1 (ブール値 TRUE) の結果を返します。これが 2 番目のクエリが失敗した理由です。「1」は有効な mysql クエリ文字列ではないためです。Greg P が述べたように、セカンダリ mysql クエリを削除することで現在のスクリプトを修正できます。

ただし、これを使用することで、スクリプトを完全に改善し、SQL 呼び出しを減らすことができます。

    <?php

    include("includes/constants.php");
    include("includes/opendb.php");

    $query = "UPDATE contacts SET owenerID='Tester' WHERE dateEntered='' ORDER BY RAND() LIMIT 50";
    $result = mysql_query($query) or die(mysql_error());
于 2012-05-25T20:05:41.603 に答える