Comment faire pour remplir zone de texte HTML avec des données MySQL
Je suis en train de faire un formulaire de mise à jour. La mise à jour de la partie est déjà au travail, mais ce serait mieux si je vais mettre un bouton d'affichage de sorte que les utilisateurs ne seront pas en entrée les données de tous les plus de nouveau juste pour le mettre à jour.
Je suis en train de travailler sur ce code, il y a un bouton dans le formulaire html avec le code suivant sa forme d'action. Sa tâche est de remplir les zones de texte appropriées selon le numéro de téléphone saisi.
<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("hospital", $con);
$result = mysql_query("SELECT * FROM t2 WHERE TELNUM='{$_POST["telnum"]}'");
while ($row = mysql_fetch_array($result))
{
<form>
<input name="lname" type="text"<?php echo $result["lname"];">
</form>
?>
Quel est le problème avec mon code? Je suis encore un débutant dans le PHP.
- Quel est le problème? Il contient une vulnérabilité d'injection SQL?
Vous devez vous connecter pour publier un commentaire.
Votre HTML n'a pas l'air correct; la valeur d'un champ de saisie de texte est spécifié avec le
value
attribut, par exempleLa ligne de données seront présents dans le
$row
de hachage;$result
est juste un pointeur vers le résultat de MySQL tampon. En outre, il vous manque un?>
tag après leecho
déclaration, et la finale?>
est mal placée. Il semble également y avoir aucune accolade de fermeture pour lawhile
boucleNotez l'utilisation de
htmlspecialchars()
pour échapper à des entités HTML dans le texte. Cela permettra d'éviter que le texte dans la base de données par inadvertance de la fermeture de la balise et le rejet de déchets partout dans votre code HTML (et de prévenir contre les entrées des utilisateurs ayant aucun effet).Dans l'ensemble, la bonne solution pourrait ressembler à quelque chose comme:
Enfin, ne pas de deuxième deviner vous, mais être prudent sur l'insertion des valeurs arbitraires à partir de données fournies par l'utilisateur (comme
$_GET
et$_POST
) dans les requêtes SQL - un utilisateur malveillant pourrait utiliser cette intentionnellement de construire des requêtes que vous ne voulez pas effectué, ou un non-utilisateur malveillant pourrait tout à fait raisonnable de fournir des données, involontairement, des pauses SQL, ce qui provoque une erreur inattendue (ou encore, une certaine forme d'inconnu mauvais comportement). Jetez un oeil à la L'injection SQL page sur le site web PHP comme un bon point de départ pour en savoir plus à ce sujet.Il devrait être:
Pas
$résultat en est que le résultat booléen de l'mysql_query() de l'appel.
$ligne avec les données réelles à chaque itération de la boucle.
Un certain nombre de choses sont mal ici.
Vous êtes d'ouverture et de fermeture des balises PHP ne correspondent pas. Vous pouvez les ouvrir au début et de les fermer en bas comme vous le faites, vous avez juste à l'écho de l'HTML au moment de le faire.
L'entrée prend une valeur d'attribut, que vous pouvez utiliser pour preset sa valeur.
Le tableau et que vous voulez tirer de votre serveur MySQL extraites de la matrice de partir est
$row
, pas$result
.Il permettrait de fermer votre boucle while.
Il serait bon pour vous d'échapper à la sortie, en fonction de ce qui est en cours de sortie.
while($row = mysql_fetch_array($result)){
echo"
";
}
Pourquoi htmlspecialchars au lieu htmlentities, je l'ai toujours utiliser htmlentities.