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

Posted

技术标签:

【中文标题】表单信息未更新到我的数据库【英文标题】:Form information is not updating to my Database 【发布时间】:2015-11-01 02:50:17 【问题描述】:

我已经坚持了 3 天了,非常感谢任何帮助。 请注意,我现在将 phphtml 放在一个页面中,直到我让它工作,然后一旦它被修复,我会将 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"  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】:

这里有一些问题。

其中一个与您的条件语句有关:

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

由于缺少名称属性“submit”,因此不会启动任何内容。

为您的提交按钮命名:

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

然后是查询中的尾随逗号:

( fname, lname, email, pswrd,)
                            ↑

删除它

( fname, lname, email, pswrd)

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

对查询使用错误检查将在您命名提交按钮时立即显示另一个语法错误:

http://php.net/manual/en/mysqli.error.php

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

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

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

// rest of your code

旁注:只应在暂存阶段显示错误,而不是在生产阶段。

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

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

http://php.net/manual/en/mysqli.affected-rows.php

我注意到您可能以纯文本形式存储密码。如果是这种情况,强烈建议不要这样做。

我建议您使用CRYPT_BLOWFISH 或PHP 5.5 的password_hash() 函数。对于 PHP password_hash() compatibility pack

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

一个安全的选择是 PHP.net 推荐使用的 VARCHAR(255)。详细信息列在他们的网站上。

http://www.php.net/manual/en/function.password-hash.php

【讨论】:

非常感谢你,我是新手,我正在使用 notepadd++ 我没有看到(fname,lname,email,pswrd,),我命名为 submit在 youtube 上学习如何做到这一点,当我遇到困难时,如果我无法修复它,我会来这里寻求专业建议!再次感谢伙计,愿你有一个美好的一天。 @AnthonySadler 不客气,Anthony,很高兴能为您提供帮助,干杯,您也度过了愉快的一天,谢谢。 感谢地穴河豚,我还没有走那么远,但我目前正在 youtube 上观看这个系列。 youtube.com/watch?v=InmQaOENDhA 边走边学 @AnthonySadler 不客气。您可能想在 Stack ***.com/a/29778421 上查看 ircmaxell 的答案之一,它使用 PDO 和准备好的语句和两个版本的 password_hash()。 PDO 方法可以通过准备好的语句轻松转换为 mysqli_。

以上是关于表单信息未更新到我的数据库的主要内容,如果未能解决你的问题,请参考以下文章

数据未更新到数据库中[关闭]

Laravel 5 模态表单数据未更新

如何修复我的表单没有将数据更新到数据库 [Codeigniter]

Firebase 实时数据库未更新 // 数据未添加到 Firebase 实时数据库

textarea 未提交到数据库

提交表单数据后,页面未在 laravel 中正确加载