insérer la valeur html sélectionnez la forme de base de données mysql
Je veux insérer la valeur d'une option "sélectionner le formulaire" dans ma base de données mysql.
Comment puis-je obtenir la bonne valeur de cette?
<form action='' method='post'>
<select name="myselectbox">
<option name="myoption1" value="myoption1">myoption1</option>
<option name="myoption2" value="myoption2">myoption2</option>
<option name="myoption3" value="myoption3">myoption3</option>
<option name="myoption4" value="myoption4">myoption4</option>
</select>
<input type='submit' value='submit'/>
</form>
quelque chose comme ça? (celui-ci ne fonctionne pas évidemment..)
$sql = "INSERT INTO Entries (myoption1) VALUES ('$_POST[myselectbox]')";
Vous avez de l'envelopper votre
je suis un débutant.. pouvez-vous me donner quelques mots clés pour ce que j'ai à la recherche pour obtenir un "wieder image" merci
Un de mes fav lectures est toujours la symfony HTTP fondamentaux, regardez pour le protocole HTTP, la séparation des préoccupations, et de routage.
Aussi, regarde "SQL Injection" et "Préparées". La construction d'INSERTION (ou de tout autre SQL) les déclarations dans ce sens est une mauvaise idée, et vous devez apprendre à les éviter dès le départ.
ok merci à vous. je suppose que ma prof est celui de l'ancienne lol
<select>
dans un <form>
avec POST
method
attribut. Mais vous devriez obtenir une image plus grande sur la façon moderne de développement web, au lieu de vous embêter avec l'habitude et obsolète PHP/MySQL code spaghetti.je suis un débutant.. pouvez-vous me donner quelques mots clés pour ce que j'ai à la recherche pour obtenir un "wieder image" merci
Un de mes fav lectures est toujours la symfony HTTP fondamentaux, regardez pour le protocole HTTP, la séparation des préoccupations, et de routage.
Aussi, regarde "SQL Injection" et "Préparées". La construction d'INSERTION (ou de tout autre SQL) les déclarations dans ce sens est une mauvaise idée, et vous devez apprendre à les éviter dès le départ.
ok merci à vous. je suppose que ma prof est celui de l'ancienne lol
OriginalL'auteur Marc Ster | 2014-02-25
Vous devez vous connecter pour publier un commentaire.
vous devez emballer votre balise select dans une balise de formulaire .
une fois que vous soumettez le formulaire, vous obtiendrez la variable post comme
$_POST['myselectbox']
qui pourraient être ajoutées dans une requête mysql comme vous l'avez déjà fait. mais pour une meilleure façon de ne pas seulement ajouter comme ça, mais de vérifier que le formulaire est soumis et après les variables ne sont pas disponibles avant d'ajouter.par exemple:
si vous avez défini l'attribut de la méthode et de l'action comme je l'ai suggéré, alors il devrait être de travail. et encore une chose , essayez d'ajouter de l' $sql = "INSERT INTO Entrées (myoption1) VALUES ('$_POST[myselectbox]')"; correctement. parce que la seule soumission avant la variable post va faire avec les clés de la chaîne de la 'post' array 🙂 . u peut post code complet ici ?
OriginalL'auteur Roo
vous avez une erreur dans votre commande SQL,
$_POST
besoins html noms enveloppés dans des citations comme =>$_POST['some_name']
:$sql = "INSERT INTO Entries (myoption1) VALUES ('$_POST[myselectbox]')";
/* ^^ missing quotes here*/
essayez de cette façon :
si le nouvel utilisateur ne parvient pas à comprendre la concaténation concept, vous pensez, il/elle va saisir l'idée de
prepared statements
....??? Aussi, il faut comprendre les vulnérabilités d'abord, avant d'apprentissagehow-to-prevent-it
... 🙂Oui, je pense qu'ils vont la saisir. Expliquer quel est le problème avec la question et d'éduquer pourquoi l'approche est erronée. Je pense que nous sommes d'accord - j'ai juste de la hausse des espoirs!
je vais le laisser à l'OP de décider ce qui est ouve... 🙂
OriginalL'auteur NoobEditor
En supposant que votre formulaire est correct et qu'il affiche les valeurs que vous souhaitez pour votre script.
(Vous avez saupoudré de votre code avec
echo
pour s'assurer que c'est le cas?)Le plus simple moyen fiable de l'envoi des données dans une instruction SQL et donc dans mysql est d'utiliser les requêtes préparées.
Prendre un coup d'oeil ici: http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
Fondamentalement, vous écrivez l'instruction SQL sans vos variables (remplacé par
?
) et ensuite dire à mysql pour exécuter les instructions à vos variables plus tard. Il évite la nécessité d'échapper à des chaînes et à s'inquiéter sur la façon de construire les choses.Comme un exemple, vous pourriez avoir:
Évidemment, vous devez ajouter la gestion des erreurs aussi, mais la documentation couvre les bases de ce.
Injection SQL
La raison principale de l'utilisation de déclarations préparées à l'avance est une bonne idée, c'est qu'elle permet d'éviter les attaques par injection SQL.
Il y a d'autres façons tour, mais dans mon esprit, c'est la solution la plus simple.
Des attaques par Injection SQL sont les situations où quelqu'un tente de modifier l'instruction SQL qui est en cours d'exécution par "injection" d'autres SQL dans votre déclaration.
À l'aide de votre code comme un exemple, vous pouvez exécuter cette instruction:
Qui devrait normalement recevoir (nous allons en proposer) quelque chose comme
myoption1
.Cela aurait pour conséquence le code SQL:
Si quelqu'un a décidé de le faire, ils pourrait envoyer
'='' OR '1'='1
Cela aurait pour conséquence le code SQL:
Qui est (évidemment) très différents.
Ou, pire encore envoyer
'=')'; DROP TABLE Entries WHERE (''='
Cela aurait pour conséquence le code SQL:
Utiliser Les Requêtes Préparées
Tout simplement, mais à l'aide de déclarations préparées à l'avance, en vous disant à mysql que ce que vous envoyez est une chaîne littérale pour être utilisé comme un paramètre. Il ne peut jamais être considérée comme faisant partie de la déclaration elle-même et, par conséquent, le ci-dessus est tout simplement pas possible.
Beaucoup beaucoup plus sûr.
J'espère que rend plus claire. Si vous voulez plus d'info je vous suggère la recherche de façon indépendante...
Ce n'est pas plus sûr que le standard de mysql/php - c'EST la norme, c'est pourquoi je obtenir gêné quand d'autres enseignent la concaténation. Je vais ajouter une brève explication dans ma réponse...
OriginalL'auteur Rob Baillie
pourquoi est -
mysql_real_escape_string
nécessaire ici....ne ressemble pas à l'utilisateur d'entrée à esacped???vous n'avez qu'à ajouter un mysql_real_escape_string comme je le suppose, parce que mysql est déjà obsolète, et les données post de " myselectbox valeur est prédéfinie dans la boîte de sélection. de sorte que nous n'avons pas besoin de vous inquiéter beaucoup sur quelles données il sera de les amener. si nécessaire, utilisez mysqli_real_escape_string
je n'ai pas utilisé le véritable évasion maintenant.. mais il est toujours pas à obtenir la valeur de mon formulaire
Vérifiez le type de bouton, soit il est
button
ousubmit
OriginalL'auteur Moeed Farooqui