Sql erreur sintaxe

swyzoo -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -

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

  1. jee pee Messages postés 31900 Date d'inscription   Statut Modérateur Dernière intervention   9 984
     

    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       

      Bonjour,

      Sujet déplacé .

      Elle concerne mariaDb (donc mysql)  et non SqlServer.

      0
    2. Swyzoo
       

      Ma table s’appelle effectivement database

      et je crois que c’est une base  mysql 

      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Swyzoo
         

        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