2015-10-15 34 views
0

這是我的PHP腳本中的一個非常基本的html頁面中的代碼。我已經嘗試過所有可能的單引號,雙精度,單精度和雙精度的變體。我根本沒有得到任何答覆。我已經過測試以確保連接已經完成,但是沒有任何內容插入到數據庫中。我只是不知道我做錯了什麼。mysqli_query插入不生成任何響應,連接正在工作,但沒有插入任何數據

// Check our connection 
if (mysqli_connect_errno($con)) { 
    print_r("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

if(isset($_POST["submit"])){ 
    $name = $_POST['name']; 
    $company = $_POST['company']; 
    $email = $_POST['email']; 
    $comment = $_POST['comment']; 

    // Insert our data 
    $query = mysqli_query("INSERT INTO 'contacts' ('id','name', 'company', 'email', 'comment') VALUES ('','$name', '$company', '$email', '$comment')", $con); 
    $result = ($query); 


    if($result) 
    { 
     print_r('Success'); 
    } 
    else 
    { 
     print_r('Query Failed'); 
    } 
    mysqli_close($con); 
} 

回答

0

對於表名和列名,不需要使用撇號(')。刪除聯繫人表中的撇號。你可以使用反引號(`)作爲列名。

$query = mysqli_query($con, "INSERT INTO contacts (id, name, company, email, comment) 
            VALUES ('','$name', '$company', '$email', '$comment')"); 

你也容易SQL injections,所以使用*_real_escape_string

$name = mysqli_real_escape_string($con, $_POST['name']); 
$company = mysqli_real_escape_string($con, $_POST['company']); 
$email = mysqli_real_escape_string($con, $_POST['email']); 
$comment = mysqli_real_escape_string($con, $_POST['comment']); 

當你在它,使用mysqli_* API,你可能要檢查的prepared statement

+0

應該從列中刪除所有引號/撇號。引號是用於字符串的。反引號是爲列。 – chris85

0

您的訂單被倒置,http://php.net/manual/en/mysqli.query.php

先連接,然後查詢。

混合mysqli_query($ mysqli的鏈接,串$查詢[摘要$ resultmode = MYSQLI_STORE_RESULT])

還使用不當周圍的列名的單引號;那些應該是反駁; When to use single quotes, double quotes, and backticks in MySQL

此外,您不應該直接將用戶輸入傳遞給SQL。這是注射的過程。你應該看看使用prepared statementsHow can I prevent SQL injection in PHP?

if (mysqli_connect_errno($con)) { 
     print_r("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
} 
if(isset($_POST["submit"])){ 
    $name = mysqli_real_escape_string($con, $_POST['name']); 
    $company = mysqli_real_escape_string($con,$_POST['company']); 
    $email = mysqli_real_escape_string($con,$_POST['email']); 
    $comment = mysqli_real_escape_string($con,$_POST['comment']); 
    // Insert our data 
    $query = mysqli_query($con, "INSERT INTO `contacts` (`name`, `company`, `email`, `comment`) VALUES ('$name', '$company', '$email', '$comment')"); 
    if($query) { 
      print_r('Success'); 
    } else { 
      print_r('Query Failed'); 
    } 
    mysqli_close($con); 
} 
+0

如果downvoting,後爲什麼(目前排名2 DVs; 2紫外線)。 – chris85

相關問題