J'ai un formulaire, dont le but est de placer l'enregistrement actuellement affiché dans une catégorie. J'utilise le code html suivant via php pour le faire:mysql paramètres d'instruction préparés et les requêtes de commande
<form name="categoryForm">
<input name="radiobutton" type="radio" value="fakeapproved" />Fake (Approved)<p>
<input name="radiobutton" type="radio" value="fakesuspected" />Fake (Suspected)<p>
<input name="radiobutton" type="radio" value="keyword" />Forbidden Keywords<p>
<input name="radiobutton" type="radio" value="parallelimport" />Parallel Imports
<input name="Submit" type="submit" value="Update" onclick="handleClick(".$pk.");return false"/>
</form>
À l'heure actuelle, j'ai simplement une table ENCHÈRES, avec une colonne de catégorie, et cette colonne est à l'une des catégories définies dans ma forme .
Cette approche n'est pas efficace pour ce que j'ai besoin de faire avec les données, donc je prévois de le changer pour avoir une colonne séparée pour chaque catégorie, qui peut être définie sur vrai ou faux.
Ce que je voudrais savoir, c'est s'il est possible d'utiliser le texte défini dans mon formulaire et obtenu via ma fonction javascript, dans ma requête sql.
Par exemple, des ventes aux enchères de mise à jour définies textfromfrom de $ = true
En ce moment, je me sers de la déclaration préparée suivant:
if($cmd=="addcat"){
$alterQuery = "UPDATE auctions SET category = ? WHERE article_no= ?";
if ($altRecord = $con->prepare($alterQuery)) {
$altRecord->bind_param("ss", $subcat, $pk);
$altRecord->execute();
$altRecord->close();
echo "true";
} else {
echo "false";
}
}
est-il un moyen de remplacer
$alterQuery = "UPDATE auctions SET category = ? WHERE article_no= ?";
avec $ alterQuery = "Mettre à jour les enchères SET? = true WHERE article_no =?";
Serait-il également possible d'exécuter une requête séparée immédiatement après, à savoir:
if($cmd=="addcat"){
$alterQuery = "UPDATE auctions SET ? = true WHERE article_no= ?";
$insertQuery = "INSERT into users (username, ?) values ?, true";
if ($altRecord = $con->prepare($alterQuery)) {
$altRecord->bind_param("ss", $category, $pk);
$altRecord->execute();
if ($insRecord = $con->prepare($insertQuery)) {
$insRecord->bind_param("ss", $category, $username);
$insRecord->execute();
$insRecord->close();
}
$altRecord->close();
echo "true";
} else {
echo "false";
}
Mon raisonnement pour l'utilisation de l'approche ci-dessus est la suivante:
La base de données de ventes aux enchères est importée d'une autre source, et je ne peux pas changer du tout la structure, sauf pour ajouter des catégories à la fin. Les clés primaires et autres ne doivent pas être changées.
Il y a seulement 4 catégories
Une enchère individuelle peut appartenir à plus d'une catégorie
Le tableau des ventes aux enchères ne traite que des ventes aux enchères. J'aurai besoin d'une table d'utilisateurs, qui consistera principalement de nouvelles entrées d'utilisateur.
Le tableau des utilisateurs doivent être en mesure de montrer pour chaque utilisateur, les catégories qu'ils ont eu des ventes aux enchères dans.
Il ne doit pas avoir plus d'un enregistrement de la table des utilisateurs par utilisateur. Le nom d'utilisateur fonctionnera comme la clé primaire.
Voulez-vous dire quelque chose comme: $ alterQuery = "UPDATE enchères SET $ category = true WHERE article_no =? "; où $ catégorie pourrait être définie en fonction de l'entrée? –
Oui, exactement. Toutes les tables et colonnes doivent être nommées dans la chaîne SQL avant de préparer la requête. –