For a web application I'm developing, I have one very complex SQL statement. Which was working before. But I can't figure out what has changed..
The sql 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 'ON DUPLICATE KEY UPDATE bankaccountid = VALUES(bankaccountid), ownerid = VALUES(' at line 1"
My query is:
<?php
if($bank_name1 !== '') {
$bank1 = "('$bank_id1', '$owner_id', '$ownertype1', '$accounttype1', '$currency1', '$bank_name1', '$bank_loc1', '$bank_country1', '$bank_accountno1', '$bank_sortcode1', '$bank_iban1', '$bank_bicswift1', '$secondary1'),";
} else {
$bank1 = '';
}
if($bank_name2 !== '') {
$bank2 = "('$bank_id2', '$owner_id', '$ownertype2', '$accounttype2', '$currency2', '$bank_name2', '$bank_loc2', '$bank_country2', '$bank_accountno2', '$bank_sortcode2', '$bank_iban2', '$bank_bicswift2', ''),";
} else {
$bank2 = '';
}
if($bank_name3 !== '') {
$bank3 = "('$bank_id3', '$owner_id', '$ownertype3', '$accounttype3', '$currency3', '$bank_name3', '$bank_loc3', '$bank_country3', '$bank_accountno3', '$bank_sortcode3', '$bank_iban3', '$bank_bicswift3', '$secondary3'),";
} else {
$bank3 = '';
}
if($bank_name4 !== '') {
$bank4 = "('$bank_id4', '$owner_id', '$ownertype4', '$accounttype4', '$currency4', '$bank_name4', '$bank_loc4', '$bank_country4', '$bank_accountno4', '$bank_sortcode4', '$bank_iban4', '$bank_bicswift4', '')";
} else {
$bank4 = '';
}
$sql = "INSERT INTO bankaccounts (bankaccountid, ownerid, ownertype, accounttype, currency, bankname, location, bankcountry, accountno, sortcode, iban, bicswift, secondary) VALUES ".$bank1." ".$bank2." ".$bank3." ".$bank4." ON DUPLICATE KEY UPDATE bankaccountid = VALUES(bankaccountid), ownerid = VALUES(ownerid), ownertype = VALUES(ownertype), accounttype = VALUES(accounttype), currency = VALUES(currency), bankname = VALUES(bankname), location = VALUES(location), bankcountry = VALUES(bankcountry), accountno = VALUES(accountno), sortcode = VALUES(sortcode), iban = VALUES(iban), bicswift = VALUES(bicswift), secondary = VALUES(secondary)";
I have been re-reading this query for an hour now.. I must be missing something rather silly...
Here is the raw SQL query:
INSERT INTO bankaccounts (bankaccountid, ownerid, ownertype, accounttype, currency,
bankname, location, bankcountry, accountno, sortcode, iban, bicswift, secondary)
VALUES ".$bank1." ".$bank2." ".$bank3." ".$bank4."
ON DUPLICATE KEY UPDATE bankaccountid = VALUES(bankaccountid),
ownerid = VALUES(ownerid), ownertype = VALUES(ownertype),
accounttype = VALUES(accounttype), currency = VALUES(currency),
bankname = VALUES(bankname), location = VALUES(location),
bankcountry = VALUES(bankcountry), accountno = VALUES(accountno),
sortcode = VALUES(sortcode), iban = VALUES(iban),
bicswift = VALUES(bicswift), secondary = VALUES(secondary)
As long as the UPDATE
part of the query is true everything is ok. But when I try to INSERT
I get the error thrown by mysql.