2017-03-05 39 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?