0

Error

Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement., SQL state 37000 in SQLExecDirect in E:\DEP\Prog\PHP6\starcraft\starcraft\personnage_traitement.php on line 61 [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.

SQL query when using the Ajouter action (ADD in english)

$nom =$_POST["nom"];
$faction = $_POST["faction"];
$age = $_POST["age"];
$race = $_POST["race"];
$description = $_POST["description"];
$fichier = $_POST["image"];

if ($_POST["action"] == "Ajouter") {


  $sql="Insert into personnage (nom,  faction, race, age, description, image) values ('$nom', $faction, $race, $age,'$description', '$fichier')";


  odbc_exec($odbc, $sql) or die(odbc_error($odbc));

My code

<fieldset>
    <legend>New hero</legend>
                    <label for="nom">Nom : </label><input type="text"     name="nom" id="nom" size="40" required><br>
                    <label for="age">Âge : </label><input type="number" name="age" id="age" size="40" required><br>
                    <label for="race">Race : </label><select name="race" id="race" size="1" >
                        <?php
                        $sql2 = "SELECT NomRace FROM Race;";
                        $resultat2 = odbc_exec($odbc, $sql2) or die(odbc_error($odbc));

                        odbc_fetch_row($resultat2, 0);

                        while (odbc_fetch_row($resultat2)) {

                            $idS = odbc_result($resultat2, "IDRace");

                            $race = utf8_encode(odbc_result($resultat2, "NomRace"));

                            echo "<OPTION VALUE=\"$idS\">$race</OPTION>";
                        }
                        ?>
                    </select> <a href="race.php">Édition des races</a><br>
                    <label for="faction">Faction : </label><select name="faction" id="faction" size="1" >
                        <?php

                        $sql3 = "SELECT NomFaction FROM Faction;";
                        $resultat3 = odbc_exec($odbc, $sql3) or die(odbc_error($odbc));

                        odbc_fetch_row($resultat3, 0);

                        while (odbc_fetch_row($resultat3)) {

                            $idS = odbc_result($resultat3, "IDFaction");

                            $faction = utf8_encode(odbc_result($resultat3, "NomFaction"));

                            echo "<OPTION VALUE=\"$idS\">$faction</OPTION>";
                        }
                        ?>
                    </select> <a href="faction.php">Édition des factions</a><br>
                    <label for="description">Description : </label><input type="text" name="description" id="description" size="40" required>
                    <br>
                    <br>
                    <input type="hidden" name="MAX_FILE_SIZE" value="100000">
                    <label for="fichier">Fichier d'image : </label>
                    <input type="file" onchange="readURL(this);" name="fichier" id="fichier">
                    <img alt="Image" id="preview" title="image" src="#" />
                    <br>
                    <br>
                    <input type="submit" name="action" value="Ajouter">
                </fieldset>  
  • 2
    Your sql query is completely wrong – Alive to die - Anant Dec 06 '17 at 05:41
  • oups forgot part of my code :o sorry! first time asking question on this site! – William Leclerc Dec 06 '17 at 05:45
  • edit your question and add the code you forget. Will help every-one to understand your problem correctly. – Alive to die - Anant Dec 06 '17 at 05:49
  • [MySQL](https://dev.mysql.com/doc/refman/5.7/en/) and [SQL Server](https://learn.microsoft.com/en-us/sql/t-sql/language-reference) are different software packages produced by different companies. Even if both of them implement SQL, they extend it in different ways and sometimes they use different syntax conventions that render the queries incompatible between them. Please use only the tags that match the software you are using. – axiac Dec 06 '17 at 06:59
  • okay good idea! – William Leclerc Dec 06 '17 at 07:05

3 Answers3

0

this is a sample code, before this you can make your if-else block

if(condition)
{

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com');"

}
iamsankalp89
  • 4,607
  • 2
  • 15
  • 36
0
<?php
$nom =$_POST["nom"];
$faction = $_POST["faction"];
$age = $_POST["age"];
$race = $_POST["race"];
$description = $_POST["description"];
$fichier = $_POST["image"];

if ($_POST["action"] == "Ajouter")
{
    $sql="INSERT into `personnage` SET `nom`='$nom',`faction`='$faction',`race`='$race',`age`='$age',`description`='$description',`image`='$fichier'";
    odbc_exec($odbc, $sql) or die(odbc_error($odbc));
}

?>
0
<?php
$sql="INSERT INTO personnage(nom,faction,race,age,description,image)values('$nom','$faction','$race','$age','$description','$fichier')";odbc_exec($odbc,$sql)ordie(odbc_error($odbc));  

or in mysql

$sql=mysql_query("INSERT INTO personnage(nom,faction,race,age,description,image)values('$nom','$faction','$race','$age','$description','$fichier')")or die("Could not execute the insert query:".mysql_error());
?>
not_null
  • 111
  • 10