表单信息未更新到我的数据库

时间:2015-08-08 20:45:55

标签: php sql html5 mysqli xampp

我已经被困在这3天了,任何帮助都会非常感激。 请注意我现在有一个页面中的php和html,直到我得到它的工作然后一旦它被修复我将把PHP连接脚本放入其通常的文件夹。 当我进入注册页面时,我可以看到我已连接到我,我可以填写我的表单并提交它没有任何错误,但数据库将不会更新,当我刷新数据库时,没有找到新用户。 下面是我的代码到目前为止,如果任何人都可以告诉我我做错了什么或我可以改进以解决这个错误我将是真诚的感谢。 提前谢谢!

<?php
    $host="localhost";
    $dbuser="root";
    $pass="********";
    $dbname="amsadler";
    $con = mysqli_connect ($host, $dbuser, $pass, $dbname);
    if (mysqli_connect_errno ())
    {
        die ("Connection Failed!" . mysqli_connect_error());
    }
    else
    {
    echo "Connected to database {$dbname} ";
    }

    if(isset($_POST['submit']))
    {
        $fname = mysqli_real_escape_string($con, $_POST ['fname']);
        $lname= mysqli_real_escape_string($con, $_POST ['lname']);
        $email= mysqli_real_escape_string($con, $_POST ['email']);
        $pswrd= mysqli_real_escape_string($con, $_POST ['pswrd']);

        $sql = $con->query("INSERT INTO users ( fname, lname, email, pswrd,)
                    VALUES ( ' {$fname} ' , ' {$lname} ' , ' {$email} ' , ' {$pswrd} ' )");

    }
?>


<!DOCTYPE html>
<html lang="en-US">
<head>
    <title>Signup</title>
    <meta charset="utf-8">
    <meta name="description" content="description of webpage">
    <meta name="keywords" content="keywords go here">
    <meta name="author" content="amsadler">
    <link rel="stylesheet" href="css/style.css">
    <link rel="stylesheet" href="css/signup.css">
    <link rel="index" href="index.php">
    <link rel="icon" href="img/favicon.png" sizes="16x16" type="image/png">
</head>
<body>

    <div class="header">
        <div id="logo">
                <a href="index.php"><img src="img/logo.png" alt="logo" title="blah blah"/></a>
        </div>
    </div>

     <div id="signupform">
        <form method="post"><br>
            <input type="text" id="fname" name="fname" placeholder="First name">
            <input type="text" id="lname" name="lname" placeholder="Last name"><br><br>
            <input type="text" id="email" name="email" placeholder="Email address">
            <input type="password" id="pswrd" name="pswrd" placeholder="Password"><br><br>
            <input id="button" type="submit" value="Submit">
        </form>
    </div>

<?php
    include ("inc/footer.php");
?>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

这里有一些问题。

其中一人正在使用您的条件声明:

if(isset($_POST['submit'])){...}

由于名称属性缺失而导致其中任何内容都无法启动&#34;提交&#34;。

命名您的提交按钮:

<input name="submit" id="button" type="submit" value="Submit">
       ^^^^^^^^^^^^^

然后在查询中使用尾随逗号:

( fname, lname, email, pswrd,)
                            ↑

将其删除

( fname, lname, email, pswrd)

or die(mysqli_error($con))添加到mysqli_query()

对查询进行错误检查会很快显示另一个语法错误,就像命名提交按钮一样:

你说没有错误?您很可能没有检查它们,或者您的系统没有为它设置并显示它们。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

  • 它会发出未定义的索引提交通知。

为了确保查询成功,请使用affected_rows()

我注意到您可能以纯文本格式存储密码。如果是这种情况,则非常气馁。

我建议您使用CRYPT_BLOWFISH或PHP 5.5&#39 {s} password_hash()功能。对于PHP&lt; 5.5使用password_hash() compatibility pack

确保在使用安全散列方法时,您的密码列足够长以容纳散列。

安全的赌注是VARCHAR(255),PHP.net建议使用它。详情列于其网站上。