1
votes

Erreurs lors de l'insertion de valeurs (telles que des URL) dans la base de données MySQL AVEC une URL

Je travaille sur mon site Web et je ne peux pas accéder à myPhpAdmin pour le moment, j'ai donc essayé de créer un script pour insérer des valeurs pour un élément de recherche. Cependant, lorsque je visite le lien website.com/search/create.php?l=link&d=description&t=title , j'obtiens une erreur. Celui-ci

$link = "https://website.com";
$description = "The homepage of the site";
$title = "Home";

// sql to create table
$sql = "INSERT INTO search (link, description, title) VALUES (".$link.", ".$description.", ".$title.")";

if (mysqli_query($conn, $sql)) {
echo "it's working";
} else {
echo "it's not working?" . mysqli_error($conn);
}

Voici à quoi ressemble mon script.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'link, description, title)' at line 1


1 commentaires

Injection SQL Little Bobby Tables xkcd.com/327 Open Web Application Security Project < a href = "https://www.owasp.org/index.php/SQL_Injection" rel = "nofollow noreferrer"> owasp.org/index.php/SQL_Injection (réponses suggérant d'incorporer des guillemets simples dans le SQL text sont incomplets s'ils ne suggèrent pas également d'échapper correctement les valeurs potentiellement dangereuses. La meilleure pratique consiste à préparer des instructions avec des espaces réservés de liaison.


4 Réponses :


0
votes

Modifiez simplement la syntaxe de la requête dans votre code et vérifiez-la ... J'espère que votre erreur devrait être résolue.

// sql to create table
$sql = "INSERT INTO search (link, description, title) VALUES ('$link', '$description', '$title')";


1 commentaires

sa modification a inséré value.create supplémentaire dot dans des valeurs comme .text.



1
votes

remplacez

$sql = "INSERT INTO search (link, description, title) VALUES (".$link.", ".$description.", ".$title.")";

au lieu de:

$sql = "INSERT INTO search (link, description, title) VALUES ('".$link."', '".$description."', '".$title."')";

vous essayez d'insérer une chaîne sans '


0 commentaires

0
votes

il semble qu'il vous manque un guillemet simple dans la requête SQL, essayez ce qui suit: -

$sql = "INSERT INTO search (link, description, title) VALUES ('".$link.", '".$description."', '".$title."')";


0 commentaires

0
votes

Votre code pour insérer des données dans la table de base de données est incorrect (en supposant que vous avez déjà exécuté la requête de connexion à la base de données ($ conn) et que vous avez une table 'search' sur la base de données).

$sql = "INSERT INTO search (link, description, title) VALUES ('$link', '$description', '$title')";

Vous ne l'avez pas devez mettre l'opérateur de concaténation ('.') dans votre requête SQL car vous ne concaténez pas PHP et les textes de balisage.


0 commentaires