2015-11-27 285 views
-2

我知道了所有的工作,感谢所有的帮助,并指引我朝着正确的方向发展。PHP不会将表单数据插入到MySQL数据库中

我有一个Web主机,它有MySQL和phpMyAdmin。下面的代码显示了我的.php文件中的PHP。当我提交表单时,数据不会存储在SQL数据库中。

我的数据库是一个名为'登录'的表。它有三个字段:'userID'是一个自动增量类型,'email'是一个VARCHAR,'password'也是一个VARCHAR。

我测试了我的连接,它确实工作,这意味着代码中的某些内容是错误的,但我无法找到它。如果你们能帮助我,我将不胜感激。

这是我的代码:

<form action="index.php" method="post"> 
       <p>Email Address:</p> 
       <input type="text" name="email" required autofocus pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$" placeholder="Please enter your email"> 
       <p>Password:</p> 
       <input type="text" name="password" required placeholder="Enter your password"> 
       <p>Confirm Password:</p> 
       <input type="text" name="confirmpassword" required placeholder="Confirm your password"> 
       <br> 
       <input class="button" type="submit" value="Register"> 
      </form> 


      <?php 
       if($_POST['submit']=="Submit") 
       { 
        $email = cleanData($_POST['email']); 
        $password = cleanData($_POST['password']); 
        $message = "wrong answer"; 
        addData($email, $pasword); 
       } 

       function cleanData($data){ 
        $data = trim($data); 
        $data = stripslashes($data); 
        $data = htmlspecialchars($data); 
        $data = strip_tags($data); 
        return $data; 
       } 

       function addData ($email, $password) 
       { 
        //include("dbinfo.php"); 
        $dbhost = 'mysql11.000webhost.com'; 
         $dbuser = '************'; //censored for security 
         $dbpass = '******'; //censored for security 
         $conn = mysql_connect("$dbhost", "$dbuser", "$dbpass"); 

         if(! $conn) 
         { 
          die('Could not connect: ' . mysql_error()); 
         } 
        $sql="INSERT INTO Logins ('userID','email','password') VALUES (null, '$email', '$password')"; 
        $result=mysql_query($sql) or die(mysql_error()); 
       } 
      ?> 
+0

登录表是否允许userID字段中有空值? – Russ

+0

userID是主键,我已将它设置为自动增量,因此每次添加新记录时,都会将其增加1.因此,不需要指定用户ID – donfromeway

+0

然后不要指定它。您的代码尝试插入空值,而不是让它默认为下一个自动增量值。 – Russ

回答

0

SQL插入字段名称不应该在报价和你提到userID自动增量所以没有必要列入它除非你想把它设置为一个特定的值。

$sql="INSERT INTO Logins (email, password) VALUES ('$email', '$password')"; 

你也应该考虑,因为mysql更改为mysqli折旧。

编辑:您的mysql_connect在您提供的代码中缺少数据库选择变量。

如果你使用每个mysqli函数的返回值,你会发现调试mysql的查询要容易得多。下面的代码检查并返回与数据库连接,查询准备,参数绑定和执行相关的任何错误。

此过程使发现问题变得更加容易,并且可以使用修改来记录错误,甚至在生产中向用户报告错误。

function addData ($email, $password) 
{ 
    //include("dbinfo.php"); 
    $dbhost = 'mysql11.000webhost.com'; 
    $dbuser = '************'; //censored for security 
    $dbpass = '******'; //censored for security 
    $dbname = ''; // this is currently missing 
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); 
    /* check connection */ 
    if ($mysqli->connect_errno) { 
     die("Connect failed: ".$mysqli->connect_error); 
    } 
    // define the query 
    $sql="INSERT INTO Logins (email, password) VALUES (?, ?)"; 
    // prepare the query 
    if (!$stmt = $mysqli->prepare($sql)) { 
     // failed to prepare query; 
     die("Prepare failed: ".$stmt->error); 
    } 
    // bind the parameters 
    if (!$res = $stmt->bind_param('ss', $email, $password)) { 
     // failed to bind 
     die("Bind failed: ".$stmt->error); 
    } 
    // execute 
    if (!$res = $stmt->execute()) { 
     // failed to execute 
     die("Execute failed: ".$stmt->error); 
    } 
    echo "Rows inserted: ".$stmt->affected_rows; 
} 
+0

我试图删除引号,但我得到了'解析错误:语法错误,意外的T_STRING'错误 – donfromeway

+0

检查您的代码。我发布的$ sql行中没有T_STRING错误。 – Tristan

+0

好吧,我改变了它,现在theres没有错误,但数据仍然没有被存储在SQL数据库 – donfromeway

0

变化if($_POST['submit']=="Submit")

if(!empty($_POST['email']) && !empty($_POST['password']))

+0

不,没有工作,谢谢你的尝试。 – donfromeway

+0

你必须从INSERT INTO查询中删除引号,就像@Tristan所说的,还要确保userID属性允许为空或者是AUTO_INCREMENT – user1365914

+0

我试着删除引号但我得到了'解析错误:语法错误,意外的T_STRING'错误 – donfromeway

0

则必须更换行:if($ _ POST [ '提交'] == “提交”) 通过if(!empty($_POST['submit'])) 或者通过if($_POST['submit']=="Register")

尝试与错误的密码错误登录连接要知道是否 它显示消息

+0

好吧,我试着在我的测试php文件中更改它,并且它回显'登录成功'即使我输入了错误的细节,现在我想我的连接可能会出错吗? – donfromeway

相关问题