PHP不会将表单数据插入MySQL数据库

PHP不会将表单数据插入MySQL数据库,php,mysql,sql,Php,Mysql,Sql,我把一切都做好了,谢谢你的帮助,给我指明了正确的方向 我有一个web主机,它有MySQL和phpMyAdmin。下面的代码显示了my.PHP文件中的PHP。提交表单时,数据不会存储在SQL数据库中 我的数据库是一个名为“Logins”的表。它有三个字段:“userID”是一个自动递增类型,“email”是一个VARCHAR,而“password”也是一个VARCHAR 我已经测试了我的连接,它确实工作了,这意味着代码中有些地方出错,但我找不到。如果你们能帮助我,我将不胜感激 这是我的代码: &l

我把一切都做好了,谢谢你的帮助,给我指明了正确的方向

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

我的数据库是一个名为“Logins”的表。它有三个字段:“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._%+-]+@[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());
                }
            ?>
如果$\u POST['submit']==submit,则更改


如果!空$_POST['email']&&!空$\u POST['password']

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

$sql="INSERT INTO Logins (email, password) VALUES ('$email', '$password')";
您还应该考虑更改MySQL,因为MySQL已经贬值。

编辑:您提供的代码中缺少数据库select变量

如果使用每个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;
}

必须替换行:if$\u POST['submit']==submit 如果!空$\u POST['submit'] 或者如果$_POST['submit']==注册

尝试使用错误的密码和错误的登录名连接,是否希望知道
它显示消息

登录表是否允许userID字段包含空值?userID是主键,我已将其设置为autoincrement,因此每次添加新记录时,它都会将其增加1。因此,不需要指定userid,也不需要指定它。你的代码尝试插入一个空值,而不是让它默认为下一个自动递增值。你必须从insert INTO查询中删除引号,如@Tristan所说,还要确保userID属性允许null或是自动递增的。我尝试删除引号,但我遇到了“分析错误:语法错误,意外的T_STRING’error虽然这段代码可以回答这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,纯代码答案没有用处。我尝试删除引号,但遇到了“解析错误:语法错误,意外的T_字符串”错误检查代码。我发布的$sql行中没有T_字符串错误。好的,我更改了它,现在没有错误,但是数据仍然没有存储在sql数据库中。如果您回显$sql并将粘贴复制到phpmyadmin中,是否有效/错误?我不知道如何执行您指示的操作,所以我只添加了:“回显$sql;”没有下一行的引号,这不起作用,没有错误好的,我试着在我的测试php文件中更改它,虽然我输入了错误的详细信息,但它回显“登录成功”,所以现在我想我的连接可能出了问题?