我有以下准备好的查询,我正在使用mysql和php。它允许用户被添加到特定类别,通过$ subcat传入。
$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)
答案 0 :(得分:1)
你为什么要那样做?将查询包含在事务中将是完全提交或回滚。
答案 1 :(得分:0)
最好创建一个存储过程:
DELIMITER $$
CREATE PROCEDURE prc_add_user_to_category(_subcat VARCHAR(20), _article_no VARCHAR(20), _username VARCHAR(30))
BEGIN
UPDATE AUCTIONS
SET subcat= _subcat
WHERE article_no= _article_no;
INSERT
INTO users (username)
VALUES (_username)
ON DUPLICATE KEY
UPDATE
username = username;
END
$$
DELIMITER ;
并从您的代码中调用它:
$alterQuery = "CALL prc_add_user_to_category(?, ?, ?)";
if ($altRecord = $con->prepare($alterQuery)) {
$altRecord->bind_param("ss", $subcat, $pk, $userid);
$altRecord->execute();
$altRecord->close();
echo "true";
}
检查并证明可以在5.2.0-falcon-alpha-community-nt-log