Sql erreur sintaxe

Fermé
swyzoo - Modifié le 22 août 2022 à 13:38
jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mars 2025 - 22 août 2022 à 17:02

Bonjour,

j'ai une erreur avec mon code php pour mettre des donnés dans une base de donnees sql

voici l'erreur : "PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'database(ID,Password) VALUES('c','c')' at line 1 in /home/vol17_1/epizy.com/epiz_32420555/htdocs/test.php:21 Stack trace: #0 /home/vol17_1/epizy.com/epiz_32420555/htdocs/test.php(21): PDO->query('INSERT INTO dat...') #1 {main}"

mon code:

formulaire html:

<!DOCTYPE html>

<html>

<head>

<metacharset="utf-8">

<metaname="viewport"content="width=device-width, initial-scale=1">

<title>test</title>

</head>

<body>

<p><h1>ça fonction</h1>

<h2>(=</h2></p>

<formaction="http://test-1-o.rf.gd/test.php"method="post">

<inputtype="string"name="id"id="id">

<inputtype="string"name="mdp"id="mdp">

<inputtype="submit"name="bouton"id="bouton"></form>

</body>

</html>

code php:

<?php

    define('HOST', 'xxxxxxxxxxxxxxzy.com');

    define('DB_NAME','xxxxxxxxxx_database');

    define('USER','xxxxxxxxxxxx555');

    define('PASS','xxxxxxxxxxxby');

try{

$db = new PDO("mysql:host=" . HOST . ";dbname=" . DB_NAME,USER,PASS);

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$requete = "INSERT INTO database(ID,Password) VALUES('$_POST[id]','$_POST[mdp]')";

$resultat = $db->query($requete);

    }catch(PDOException $e){

echo$e;}

?>

aidez-moi je cherche depuis des semaines


Macintosh / Firefox 103.0

1 réponse

jee pee Messages postés 40945 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 mars 2025 9 564
Modifié le 22 août 2022 à 13:43

Bonjour,

La syntaxe complète en sqlserver est

INSERT [INTO] { database_name.schema_name.table_name | schema_name.table_name | table_name }
    [ ( column_name [ ,...n ] ) ]  
    {   
      VALUES ( { NULL | expression } )  
      | SELECT <select_criteria>  
    }  
    [ OPTION ( <query_option> [ ,...n ] ) ]  
[;]  

et il est rare d'utiliser un nom complet database_name.schema_name.table_name on se contente généralement de table_name

donc ton insert into database est incongru, ce devrait être

INSERT INTO tablename  (ID,Password) VALUES  ('$_POST[id]','$_POST[mdp]')

sauf si ta table s'appelle database, ce qui pourrait être une mauvaise idée si c'est un mot réservé.

PS : pour poster du code sur le forum il faut utiliser l’icône <> de l’éditeur de message. Puis il est très dangereux de laisser  tous les identifiants de connexion à une DB en publiant du code.

PS2 : es-tu certain d'avoir une base Micrososft SqlServer, et pas tout simplement un base MySql ???


0
jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mars 2025 4 740
22 août 2022 à 14:14

Bonjour,

Sujet déplacé .

Elle concerne mariaDb (donc mysql)  et non SqlServer.

0

Ma table s’appelle effectivement database

et je crois que c’est une base  mysql 

0
jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mars 2025 4 740 > Swyzoo
22 août 2022 à 17:02

Attention, certains "mots" sont "réservés.

Il vaut mieux éviter d'utiliser pour le nom de la base, des tables, des champs .. des mots tels que : database,  datatable, order, group, use ... 

Donc recréé une nouvelle base avec un "meilleur" nom .. et réessaies..

0