J'ai la requête préparée suivante que j'utilise avec mysql et php. C'est pour permettre aux utilisateurs d'être ajoutés à une catégorie particulière, transmise via $ subcat.Modification de plusieurs tables dans une requête avec une instruction apliquée
$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";
}
Ce que je voudrais faire, dans la même requête, est d'insérer un nouvel enregistrement dans la table des utilisateurs n'insérant le nom d'utilisateur, après avoir vérifié que le nom d'utilisateur n'existe pas déjà. Est-il possible de simplement changer $ alterQuery à:
Quel est le meilleur quoi faire?
Vérifiez le nom d'utilisateur, et si == null, faites un insert suivant? puis-je avoir deux requêtes différentes exécutées dans le même bloc?
modifier: schéma de base de données en réponse à la fixation des commentaires
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)
Cela a échoué complètement avec mysql 5.0. J'ai essayé les éléments suivants: CREATE PROCEDURE addToCategory (_subcat INT, INT _article_no, _username INT) BEGIN DECLARE MISE À JOUR ENCHÈRES SET subcat = _subcat OÙ article_no = _article_no; INSERT INTO utilisateurs (nom d'utilisateur) VALUES (_nom d'utilisateur) SUR LA MISE À JOUR DE LA CLÉ DUPLICATE SET username = nomutilisateur; END Il est dit de vérifier ma syntaxe près de UPDATE AUCTIONS –
Il donne maintenant: # 1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser à proximité) BEGIN MISE À JOUR ENCHÈRES SET subcat = _subcat WHE 'à la ligne 1 –
Ajouter longueur à une définition VARCHAR – Quassnoi