0

mysql テーブルが存在する場合は更新し、存在しない場合は作成する関数を作成しようとしています。

私のスクリプトは、更新する代わりに新しいエントリを作成します。

ここに私のSQL構造があります:

CREATE TABLE IF NOT EXISTS `loan` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `bank_id` int(11) DEFAULT NULL,
  `name` longtext COLLATE utf8_unicode_ci,
  `rate` decimal(8,3) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `loan_0b0af02d` (`bank_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

ここに私のphpスクリプトがあります:

$item_insert_sql = "INSERT INTO loan(id, bank_id, name, rate) VALUES ('" . $id . "', '" . $bank_id . "', '" . $name . "', '" . $rate . "'), primary key (id), ON DUPLICATE KEY UPDATE (name='$name', rate='$rate')";
$insert_item = mysql_query($item_insert_sql, $db); 

これを修正するには、どうすればよいですか?

4

2 に答える 2

2

挿入ステートメントが正しくありません。挿入で主キーを定義することはできず、on duplicate構文も悪いです:

INSERT INTO table (... fields ...) VALUES (... values ...)
ON DUPLICATE KEY SET field1=value1, field2=value2, etc...

query() 呼び出しで最小限のエラー処理があったとしても、次のエラー メッセージが表示されます。

$insert_item = mysql_query($item_insert_sql, $db) or die(mysql_error());
                                                 ^^^^^^^^^^^^^^^^^^^^^^
于 2012-11-01T15:35:16.290 に答える