1

2 つの MYSQL テーブルがあり、1 つの列のみを含むテーブル A から日付を取得すると、日付を含む 10 行と言えます

    $result = mysql_query("SELECT * FROM A");
    $row = mysql_fetch_assoc($result);

そして、テーブルAからこの日付を使用して別のテーブルBを更新したい mysql_query("UPDATE B SET something='1' WHERE name='".$row['name']."'") ので、2番目のテーブルを更新する必要がありますが、テーブルAからの最初の日付で1回だけ更新し、他の9つは無視します。私の質問は、1 つのテーブルの各日付で 2 番目のテーブルを更新する方法です。

4

1 に答える 1

0

更新をループで実行する必要があります。クエリを実行した後

$result = mysql_query("SELECT * FROM A");

1行をフェッチする代わりに、それが成功したことを確認して( $resultnullでないことを確認してください)、ループを使用します:

while($row = mysql_fetch_assoc($result)){
    // perform calculations & assignments with the $row elements
    $result2 = mysql_query("UPDATE B SET something='1'
                            WHERE name='".$row['name']."'");
    if(! $result2){
         echo "update failed";
    }
    // Any other stuff you need to do
}

または:

更新の がすべての行で同じである場合はsomething、最初のクエリを変更して、カンマで区切られた名前の文字列を取得できます。

$result = mysql_query("SELECT CONCAT("'",GROUP_CONCAT(name SEPARATOR "','"),"'")
                       AS all_names FROM A");

このようにして、1 行だけを受け取り、それを 2 番目のクエリで使用できます。

$result2 = mysql_query("UPDATE B SET something='1'
                        WHERE name IN (".$row['name'].")");
于 2013-04-22T19:31:47.360 に答える