2017-08-02 85 views
0

我試圖將我的數據插入到數據庫中。但是我的代碼給了我一個錯誤「你的SQL語法有錯誤;查看與你的MySQL服務器版本相對應的手冊,在第二行'''''附近使用正確的語法'」 我的代碼:將數據插入MYSQL表時出現一些錯誤

$dbhost="localhost"; 
$dbuser="admin"; 
$dbpass="password"; 
$dbname="form-recieve"; 
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); 
if(mysqli_connect_errno()) { 
    die("Database connection failed: ". 
    mysqli_connect_errno(). 
    " (" . mysqli_connect_errno() . ")" 
    ); 
} 
if (isset($_POST['submit'])) { 
    $Username = $_POST["user_name"]; 
    $Email = $_POST["email"]; 
    $Phone = $_POST["phone"]; 
    $Message = $_POST["message"]; 
    $Thanks = "Hi {$Username}, We will get to you as fast as we can."; 
} 
$Username = mysqli_real_escape_string($connection, $Username); 
$Email = mysqli_real_escape_string($connection, $Email); 
$Phone = mysqli_real_escape_string($connection, $Phone); 
$Message = mysqli_real_escape_string($connection, $Message); 
$query = "INSERT INTO contacted (name, email, phone, message) 
VALUES ('{$Username}', {$Email}, {$Phone}, '{$Message}')"; 
$result = mysqli_query($connection, $query); 
if (!$result) { 
    die("Database Query Failed" . mysqli_error($connection)); 
} 
+0

您的腳本存在[SQL注入攻擊]的風險(http://stackoverflow.com/questions/60174/how-c即使[如果你正在逃避投入,它不安全!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around -mysql-real-escape-string) 使用[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

+0

嗯..我會嘗試 –

+0

我猜想「email」列是文本,因此您需要VALUE子句中的「{$ Email}」。同上'phone' – RiggsFolly

回答

4
當你寫的插入查詢或更新表中的記錄

其重要的使用這些標誌爲列'名稱及其字符串值很重要(如VARCHAR,字符,日期,文本..)來使用單引號

$query = "INSERT INTO contacted (`name`, `email`, `phone`, `message`) 
VALUES ('{$Username}', '{$Email}', '{$Phone}', '{$Message}')"; 
+0

你介意解釋你的答案嗎?這讓OP明白了爲什麼他們的代碼失敗,併爲未來的訪問者。 –

+0

現在的錯誤是不正確的整數值:''列'手機'在第1行 –

+0

我認爲這個作品幾乎感謝 –

相關問題