2017-09-09 6 views
-1

Je suis en train de faire une forme insérer des valeurs dans la base de données à l'aide de PDOSQLSTATE [42000]: Erreur de syntaxe ou violation d'accès: 1064

<?php 
if(isset($_POST["submit"])){ 
$hostname='localhost'; 
$username='kod'; 
$password=''; 

try { 
    $dbh = new PDO("mysql:host=$hostname;dbname=kod",$username,$password); 

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


$sql = "INSERT INTO `user` (`OwnerName`, `PhoneNumber`, `EmailId`, `AdharNumber`, `Address`, `OutletName`, `OutletAddress`) 
VALUES (`".$_POST[`OwnerName`]."`, 
     `".$_POST[`PhoneNumber`]."`, 
     `".$_POST[`EmailId`]."` 
     `".$_POST[`AdharNumber`]."`, 
     `".$_POST[`Address`]."`, 
     `".$_POST[`OutletName`]."`, 
     `".$_POST[`OutletAddress`]."`,)"; 


if ($dbh->query($sql)) { 
    header("Location: AdminProfile.php "); 
    //echo "<script type= 'text/javascript'>alert('New Record Inserted Successfully');</script>"; 
} 
else{ 
    echo "<script type= 'text/javascript'>alert('Data not successfully Inserted.');</script>"; 
} 

    $dbh = null; 
    } 
catch(PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 

} 
?> 

et maintenant je reçois cette erreur

SQLSTATE [42000]: Erreur de syntaxe ou violation d'accès: 1064 Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur de MariaDB pour la bonne syntaxe à utiliser près «) » à la ligne 8

aider à bien vouloir

+0

Cela rendra probablement l'erreur beaucoup plus claire. – Erik

+1

En outre, vous devriez vraiment utiliser une instruction préparée, comme vous vous laissant large ouverte aux injections SQL de cette façon – Erik

+0

"aimablement aider" comme dans "Je n'ai même pas essayé d'avoir des pensées sur le message d'erreur"? – mario

Répondre

2

Retirez le , après $_POST['OutletAddress'] ligne.

`".$_POST[`OutletAddress`]."`)"; 

TIP: utiliser des instructions préparées à contruct votre requête SQL. Il est plus efficace, sûr & lisible. Essayez un var_dump() de $ sql.

+1

Et pas de backticks pour les valeurs –

+0

pouvez-vous m'en fournir un. Je suis nouveau à ce –

+1

PHP.net a un manuel complet sur les déclarations préparées: http://php.net/manual/en/pdo.prepared-statements.php. Si ce n'est pas assez clair, il suffit de google "didacticiel déclaration PDO préparé" et choisissez celui que vous aimez. – Erik