PHP à Insérer dans MySQL erreur de syntaxe
Je vais avoir de la difficulté à présenter des données à MySQL via php, j'obtiens l'erreur suivante:
"Erreur: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de "l'étudiant" (UID, Prénom, Nom, date de naissance, EmergencyContact, Adresse, Ville, État' à la ligne 1"
Je ne suis pas sûr de l'endroit où je suis allé mal, toute aide serait super.
<?php
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$dob = $_POST['dob'];
$emergencycontact = $_POST['emergencycontactperson'];
$address = $_POST['addressline1'];
$city = $_POST['city'];
$state = $_POST['state'];
$zip = $_POST['zip'];
$homephone = $_POST['homephone'];
$cellphone = $_POST['cellphone'];
$guardian = $_POST['guardian'];
$inneighborhood = 0;
if ($zip == "49503")
$inneighborhood = 1;
$con = mysqli_connect("localhost", "cookarts_root", "password", "cookarts_database");
//Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "INSERT INTO 'student' (FirstName, LastName, DOB, EmergencyContact, Address, City, State, ZIP, CellPhone, HomePhone, Guardian, InNeighborhood)
VALUES
($firstname', '$lastname', '$dob', '$emergencycontact', '$address', '$city', '$state', '$zip', '$cellphone', '$homephone', '$guardian', '$inneighborhood')";
if ($con->query($sql) === TRUE) {
echo 'users entry saved successfully';
}
else {
echo 'Error: '. $con->error;
}
mysqli_close($con);
?>
Si vous avez besoin de plus d'info je serais heureux de les fournir, merci encore pour l'aide.
- Semblent être à côté de l'apostrophe avant le $firstname
- Il y a des vulnérabilités d'injection SQL dans votre code, utilisez
mysqli_real_escape_string
avant de concaténer les variables POST à votre requête ou, mieux, utiliser des requêtes paramétrées.
Vous devez vous connecter pour publier un commentaire.
TableNames
sont des Identificateurs de sorte qu'ils ne devraient pas être placés entre guillemets simples. Depuis le nom de la table que vous avez utilisé n'est pas un mot clé réservé, vous pouvez simplement supprimer ces emballage des guillemets autour de,Lorsque vous envelopper quelque chose avec des guillemets simples, il force l'objet de devenir une chaîne littérale. Ainsi, lorsque les identifiants sont les envelopper avec des guillemets simples, cela signifie qu'ils ne sont pas identificateur de plus.
Le serveur déclenche une exception parce que
INSERT INTO
s'attend à un identificateur n'est pas un littéral de chaîne.Lorsque vous avez accidentellement utilisé un nom de table qui est un MySQL Mot Clé Réservé, ne pas utiliser de guillemets simples pour délimiter les identificateurs mais avec
backticks
.Au passage, la requête est vulnérable à
Injection SQL
si la valeur(s) des variables est venu de l'extérieur. Veuillez prendre un coup d'oeil à l'article ci-dessous pour savoir comment empêcher de lui. En utilisantPreparedStatements
vous pouvez vous débarrasser de l'utilisation des guillemets simples autour de valeurs.`
$firstname
avec des guillemets.modifier votre requête à
ne pas utiliser des guillemets autour des noms de table
Ressemble il vous manque quelques choses de trop:
Vous Avez:
($prenom',
Doit être: (disparus " au début)
('$prenom',
Mais même alors, vous souhaiterez peut-être utiliser " (guillemets) et leur échapper de la sorte:
(\"$prenom\",
Vous aussi vous avez beaucoup d'espace entre l'adresse et la ville sur votre INSERTION DANS la ligne de...
L'Adresse, La Ville
Et oui, vous devez vous échapper de votre serveur mysql noms de champ avec un"