PHP没有将表单数据插入MySQL数据库

时间:2015-11-27 21:30:24

标签: php mysql sql

我把这一切都搞定了,感谢你的帮助,并指出了我正确的方向。

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

我的数据库是一个名为' Logins'的表。它有三个字段:' userID'这是一种自动增量类型,'电子邮件'这是一个VARCHAR和'密码'这也是一个VARCHAR。

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

这是我的代码:

<form action="index.php" method="post">
              <p>Email Address:</p>
              <input type="text" name="email" required autofocus pattern="[a-z0-9._%+-]+@[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());
                }
            ?>

3 个答案:

答案 0 :(得分:0)

更改if($_POST['submit']=="Submit")

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

答案 1 :(得分:0)

sql insert字段名称不应该在引号中,并且您提到userID是自动递增的,因此除非您想将其设置为特定值,否则不需要包含它。

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

您应该考虑更改为mysqli,因为mysql已弃用。

编辑:您的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;
}

答案 2 :(得分:0)

你必须更换一行:if($ _ POST [&#39; submit&#39;] ==&#34; Submit&#34;) 截至if(!empty($_POST['submit'])) 或者if($_POST['submit']=="Register")

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