2017-03-05 41 views
0

我無法插入數據到mysql表中。我的代碼有什麼問題? 這裏是我用過的php代碼。提交時我沒有收到任何迴應。 這個php用在HTML表單的同一頁面,所以我的屬性是action =「」和method =「post」。請幫忙。 enter code here無法插入數據在mysql表中通過php

<?php 
    ob_start(); 
    session_start(); 
    require_once 'dbconnect.php'; 

    // if session is not set this will redirect to login page 
    if(!isset($_SESSION['user'])) { 
     header("Location: index.html"); 
     exit; 
    } 
    // select loggedin users detail 
    $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']); 
    $userRow=mysql_fetch_array($res); 


    if (isset($_POST['sub'])) { 

     // clean user inputs to prevent sql injections 
     $name1 = $_POST['name1']; 
     $name2 = $_POST['name2']; 
     $name3 = $_POST['name3']; 
     $name4 = $_POST['name4']; 
     $name5 = $_POST['name5']; 
     $name6 = $_POST['name6']; 
     $name7 = $_POST['name7']; 
     $name8 = $_POST['name8']; 
     $name9 = $_POST['name9']; 


     if(!$error) { 

      $query = "INSERT INTO users(name1,name2,name3,name4,name5,name6,name7,name8,name9) VALUES('$name1','$name2','$name3','$name4','$name5','$name6','$name7','$name8','$name9') WHERE userId=".$_SESSION['user']; 
      $res = mysql_query($query); 

      if ($res) { 
       $errTyp = "success"; 
       $errMSG = "Successfully registered, you may login now"; 
       unset($name1); 

      } else { 
       $errTyp = "danger"; 
       $errMSG = "Something went wrong, try again later..."; 
      } 
      } 
} 
?> 
+0

請注意:您不是在「清理」任何東西,也無法阻止SQL注入。立即使用參數。 –

+0

我第一次評論 - 但如果你正在學習,這不會生產......跳到我身上的第一件事是在INSERT之後的WHERE。你如何爲不存在的東西指定標準?你會使用WHERE進行UPDATE NOT INSERT –

+0

我知道我已經簡化了代碼,只是爲了理解。但它仍然不起作用 –

回答

0

由於Alex.Barylski在評論中指出,INSERT語句創建一個新的行,所以你不能使用WHERE子句(這是用來檢查現有的行...)。如果您想更新一個已經存在的行,請使用以下的,而不是你的INSERT語句:

 $query = 'UPDATE users SET name1 = "$name1", name2 = "$name2", name3 = "$name3" WHERE userId=' . $_SESSION['user']; 

還要注意的是,你可以使用mysql_affected_rows()函數來檢查您的UPDATE查詢是否成功,看到了這個問題:How do I tell when a MySQL UPDATE was successful versus actually updated data?