2014-02-14 118 views
-2

有誰能告訴我我在這裏做錯了嗎?這讓我瘋狂!查詢沒有將數據插入到數據庫中?

$mysqli = new mysqli("localhost", "user", "pass", "admin_responsivecontact"); 


    if ($mysqli->connect_errno) { 
     die('Error: Could not connect to database'); 
    } 
    else {echo "success";} 
    $sql = 'INSERT INTO contact (id,name,company,job,email,tel,info,guide,add,date) VALUES (1,'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'")'; 


    $result = $mysqli->query($sql); 

    $mysqli->close(); 
+4

張貼您的錯誤和神的愛請不要使用這樣的代碼。添加POST參數到你的sql字符串將打開你sql注入。備選:準備好的語句(https://php.net/manual/de/mysqli.quickstart.prepared-statements.php)。 – roman

+0

錯了?那麼,你檢查連接錯誤,但假設所有查詢都能正常工作。不確定你的意思。 –

回答

1

add是MySQL中的reserved word。用反引號括起來!

你應該做的像

'INSERT INTO contact (`id`,`name`,`company`,`job`,`email`,`tel`,`info`,`guide`,`add`,`date`) 
                   //Like this   ^---^ 
+1

謝謝!我改變了列名,它完美的工作! –

0

在上面的代碼中的許多問題:

1)容易注射,無消毒進行。
2)重用相同的POST變量,而不是將其存儲在工人變量中,然後應該對其進行消毒。
3)使用MySQL關鍵字作爲沒有反引號的字段名稱。
4)不能轉義輸入。所以如果有人用撇號輸入名字,就會出現錯誤。還涉及1)。
5)你有一個叫做「id」的字段。它們通常是自動增量的,所以你不能只將它賦值爲「1」並且完成它。一種解決方案是隻是省略它,讓MySQL填寫正確的當前計數器值。
6)顯然你有一個叫做「日期」的字段,所以它可能是一個輸入字段。然而,你似乎把它分配給你分配給其他領域的同一個字符串。