Insérer dans la Table MySQL PHP
Je vais avoir quelques difficultés à faire un simple formulaire pour insérer des données dans une table MySQL. Je reçois cette erreur SQL:
"Erreur: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel
correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser
près de 'stock ('ItemNumber', 'Stock') les VALEURS ('#4','3")' à la ligne 1"
Mon HTML pour le formulaire est:
<form action="database.php" method="post">
Item Number: <input type="text" name="ItemNumber">
Stock: <input type="text" name="Stock">
<input type="submit">
</form>
Et la PHP est:
<?php
$con=mysqli_connect("localhost","root","root","inventory");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "INSERT INTO current stock ('ItemNumber', 'Stock')
VALUES
('$_POST[ItemNumber]','$_POST[Stock]'')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
Votre page web est grande ouverte pour les injections SQL. Ne pas un code comme ceci. Au lieu d'utiliser des procédures stockées SQL paramétrée de commandes et d'interdire à l'utilisateur à partir de la saisie des caractères spéciaux...
Je voudrais aussi éviter l'utilisation de l'espace de caractère dans un tableau ou un nom de champ.
Je sais que c'est une vieille question, mais le projet de Loi Karwin a la meilleure réponse ici. Les autres réponses sont en insécurité.
Je voudrais aussi éviter l'utilisation de l'espace de caractère dans un tableau ou un nom de champ.
Je sais que c'est une vieille question, mais le projet de Loi Karwin a la meilleure réponse ici. Les autres réponses sont en insécurité.
OriginalL'auteur Jake Ols | 2013-06-16
Vous devez vous connecter pour publier un commentaire.
essayer cette
vous ne devriez pas utiliser des citations de paramètre autour de la POSTE . et vous devez les utiliser à l'intérieur de POST
vous devez échapper à tes variables avant de les insérer à mysql comme ça
mysqli_real_escape_string
. Vous n'aurez qu'à utilisermysqli_real_escape_string
si vous avez été l'intégration de la chaîne directement dans la requête, mais je vous conseille de ne jamais faire cela. Toujours utiliser des paramètres à chaque fois que possible.Je suis encore en train d'erreur de serveur
travaillé 🙂 merci!
sympa 🙂 , de vous souhaiter la bienvenue !
Merci de ne pas donner de mauvais exemples avec SQL-injection, en particulier pour les débutants qui ont encore des problèmes avec la syntaxe....
OriginalL'auteur echo_Me
Vous avez un supplément de devis et vous avez besoin de tiques autour de votre nom de table, car il contient un espace.
devrait être:
Pour info, vous avez également l'échelle ouverte de Des injections SQL
Voir ma mise à jour de la réponse que vous avez deux erreurs
OriginalL'auteur John Conde
Si ceci est fait dans le cadre de la votre réponse, ajoutez ceci à votre réponse existant et ajouter une explication. Sinon, ce n'est pas vraiment une bonne réponse.
OriginalL'auteur Niraj
S'il vous plaît apprendre à utiliser le paramètre de liaison. Vous êtes à la création de code avec des failles de sécurité.
Voici comment faire de votre code de mysqli:
Il est plus facile d'utiliser des paramètres liés que pour obtenir toutes les confondre avec les citations dans les citations.
OriginalL'auteur Bill Karwin
OriginalL'auteur Niraj