2017-09-09 139 views
-1

我試圖讓該插入使用PDOSQLSTATE [42000]:語法錯誤或訪問衝突: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(); 
    } 

} 
?> 

在數據庫中的值,現在我收到此錯誤

SQLSTATE形式[42000]:語法錯誤或訪問衝突:1064您的SQL語法中有一個 錯誤;檢查對應於您 MariaDB的服務器版本使用附近的正確語法手冊「)」在第8行

好心幫

+0

嘗試執行$ sql的var_dump()。它可能會使錯誤更加清晰。 – Erik

+1

另外,你應該真的使用一個準備好的語句,因爲你要這樣對SQL注入敞開大門 – Erik

+0

「善意幫助」,如「我甚至沒有試圖對錯誤信息有任何想法」? – mario

回答

2

$_POST['OutletAddress']行中刪除,

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

提示:使用準備好的語句去構造SQL查詢。它更高效,安全&可讀。

+1

而且你可以給我一個價值 –

+0

沒有反引號。我是這個新手 –

+1

PHP.net有一個關於準備語句的大量手冊:http://php.net/manual/en/pdo.prepared-statements.php。如果這還不夠清楚,只需谷歌「PDO準備語句教程」,並選擇一個你喜歡的。 – Erik

相關問題