У меня есть следующий подготовленный запрос, который я использую с mysql и php. Он позволяет добавлять пользователей в определенную категорию, передаваемую через $ subcat.изменение нескольких таблиц в одном запросе с помощью оператора aprepared
$alterQuery = "UPDATE AUCTIONS SET subcat= ? WHERE article_no= ?";
if ($altRecord = $con->prepare($alterQuery)) {
$altRecord->bind_param("ss", $subcat, $pk);
$altRecord->execute();
$altRecord->close();
echo "true";
}
То, что я хотел бы сделать, в том же запросе, это вставить новую запись в таблице USERS только вставив имя пользователя, после проверки того, что имя пользователя уже не существует. Можно ли просто изменить $ alterQuery на:
Что лучше всего для этого?
Проверьте имя пользователя, а если оно == null, выполните следующую вставку? могу ли я выполнить два разных запроса в том же блоке if?
редактировать: прикрепление схему базы данных в ответ на комментарий
AUCTIONS
ARTICLE_NO varchar(20) primary key
ARTICLE_NAME varchar(100)
SUBTITLE varchar(20)
CURRENT_BID decimal(5,2)
START_PRICE decimal(5,2)
BID_COUNT varchar(20)
QUANT_TOTAL varchar(20)
QUANT_SOLD varchar(20)
ACCESSSTARTS varchar(30)
ACCESSENDS varchar(20)
ACCESSORIGIN_END varchar(20)
USERNAME varchar(20)
BEST_BIDDER_ID varchar(20)
FINISHED tinyint(4)
WATCH tinyint(4)
BUYITNOW_PRICE decimal(5,2)
PIC_URL varchar(120)
PRIVATE_AUCTION tinyint(4)
AUCTION_TYPE varchar(20)
ACCESSINSERT_DATE varchar(20)
ACCESSUPDATE_DATE varchar(20)
CAT_DESC varchar(20)
CAT_PATH varchar(20)
ARTICLE_DESC text
COUNTRYCODE varchar(20)
LOCATION varchar(20)
CONDITIONS varchar(20)
REVISED tinyint(4)
PAYPAL_ACCEPT tinyint(4)
PRE_TERMINATED tinyint(4)
SHIPPING_TO varchar(20)
FEE_INSERTION decimal(5,2)
FEE_FINAL decimal(5,2)
FEE_LISTING decimal(5,2)
PIC_XXL tinyint(4)
PIC_DIASHOW tinyint(4)
PIC_COUNT varchar(20)
ITEM_SITE_ID varchar(20)
STARTS datetime
ENDS datetime
ORIGIN_END datetime
SUBCAT varchar(20)
USERS
username varchar(30) primary key
firstname varchar(30)
lastname varchar(30)
flaggedauctions varchar(30)
lastauction varchar(30)
street1 varchar(30)
city1 varchar(30)
postcode1 varchar(30)
street2 varchar(30)
city2 varchar(30)
postcode2 varchar(30)
phone varchar(30)
mobilephone varchar(30)
fax varchar(30)
email varchar(30)
website varchar(30)
bank varchar(30)
banknumber varchar(30)
accountnumber varchar(30)
comments varchar(30)
Это не удалось с помощью mysql 5.0. Я попробовал следующее: CREATE PROCEDURE addToCategory (_subcat INT, INT _article_no, _username INT) НАЧАТЬ DECLARE UPDATE SET АУКЦИОНАХ подкатегорию = _subcat ГДЕ article_no = _article_no; INSERT INTO пользователи (имя пользователя) VALUES (_username) ON DUPLICATE KEY UPDATE SET username = имя пользователя; END Он сказал, чтобы проверить мой синтаксис рядом с UPDATE AUCTIONS – 2009-04-20 10:01:40
Теперь он дает: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «) НАЧАТЬ UPDATE ТОРГИ SET подкатегории = _subcat WHE» в строке 1 – 2009-04-20 10:20:08
Добавить длину определения VARCHAR – Quassnoi