0

以下のコードを参照してください。実際に動作します。affiliateレコードが存在しない場合、テーブルに挿入します。テーブルに挿入されている場合は、affiliateテーブルに新しいレコードが追加されphoneます。ただし、3 番目のクエリでテーブル (新しい最近のレコード) のphone_idフィールドを更新する必要があります。これを減らす方法はありますか?affiliate

$SQLInsert = "INSERT INTO affiliate (affiliate_id, affiliate_phone_id, stock) ";
$SQLInsert .= "VALUES ('1', '$affiliatePhoneID', '$stock') ";
$SQLInsert .= "ON DUPLICATE KEY UPDATE stock = '$stock'";
mysql_query($SQLInsert);
if (mysql_insert_id()) {
    $SQLInsert = "INSERT INTO phone (name) VALUE('$phoneName')";
    $q = mysql_query($SQLInsert);

    // If a record has been inserted into affiliate table and then phone table
    // then it need to update phone_id field in affiliate table. 
    $phone_id = mysql_insert_id();
    $SQLUpdate = "UPDATE affiliate set phone_id = $phone_id WHERE affiliate_id = 1 AND affiliate_phone_id = '$affiliatePhoneID'";
    mysql_query($SQLUpdate) or die(mysql_error());
}
4

1 に答える 1

0

電話テーブルが affilaite テーブルへの forainkey を保持するように、データベースのスキーマを変更することもできます。したがって、アフィリエイト テーブルを 2 回更新する必要はありません。

それが望ましくない場合は、最初に phone テーブルを更新してから、affilate テーブルを更新してみてください。

于 2012-09-21T10:11:27.837 に答える