当前位置: 首页 > 知识库问答 >
问题:

插入数据到数据库不工作(PHP-SQL)

冯福
2023-03-14

我的PHP代码中的插入数据sql命令不工作。有人能帮帮忙吗?

我有一个注册表,它从输入字段(姓名、姓氏、电子邮件、用户名和密码)中获取值

用户在此字段中输入的值应保存到我的表“users”中,该表有以下列(ID[主键/INT]、name[文本]、lastname[文本]、e-mail[变量字符]、username[变量字符]和password[变量字符])。

这是我目前的代码

if (isset ($_POST['name'],$_POST['lastname'],$_POST['email'],$_POST['username'], $_POST['password']))
    {
        //connect to database
        $conn = mysqli_connect ('localhost', 'root', '', 'test_database');

        if ($conn)          
        {
            $sql="SELECT username FROM users WHERE username = '" . $_POST['username'] . "';";
            $query = mysqli_query ($conn, $sql);
            $result = mysqli_fetch_array ($query);

            if ($result ['username'])
            {
                header ('Location: ' . $_SERVER['PHP_SELF'] . '?errno=1');
            }
            else
            {
                $sql="INSERT INTO users (ID, name, lastname, e-mail, username, password) VALUES (' ','" .$_POST['name'] . "' ,'" . $_POST['lastname']. "' ,'" . $_POST['email']. "' ,'" . $_POST['username']. "' ,'" . $_POST['password']. "');";
                mysqli_query ($conn, $sql);
                mysqli_close ($conn);   
                //registration completed, redirect to index page
                //header ('Location:index.php?reg=1');

            }
        }

        else
        {
            echo 'connection error';
        }

    }

共有2个答案

沈翰
2023-03-14

你用''来插入id. id应该是自动递增和唯一的.你不能插入一个空白的空间给所有的.试着从插入到查询中删除id.把你的查询变成这个

$sql="INSERT INTO users (name, lastname, e-mail, username, password) VALUES ('" .$_POST['name'] . "' ,'" . $_POST['lastname']. "' ,'" . $_POST['email']. "' ,'" . $_POST['username']. "' ,'" . $_POST['password']. "');";
胡承悦
2023-03-14

除了已在注释中概述的空格值(“”,用于ID列等)之外,您的电子邮件列名还包含连字符,并被解释为e减去mail,以及一个数学运算。

要么将其重命名为e_mail,要么在其周围放置刻度。

`e-mail`

阅读以下标识符修饰符:

  • http://dev.mysql.com/doc/refman/5.7/en/identifier-qualifiers.html

在查询中使用mysqli\u error($conn)会引发语法错误。

旁注:您应该转义数据有很多原因,其中一个原因是为了防止SQL注入,如果您的数据可能包含MySQL可能抱怨的字符,例如John's Bar

您当前的代码对SQL注入开放。使用准备好的语句,或PDO与准备好的语句一起使用。

密码

使用以下选项之一:

  • CRYPT_BLOWFISH
  • 密码()
  • bcrypt()
  • scrypt()
  • 在开放的墙壁上
  • PBKDF2
  • PBKDF2 on PHP. net
  • PHP 5.5的password_hash()函数。
  • 兼容性包(如果PHP

其他链接:

  • 用于PHP的PBKDF2

关于列长度的重要旁注:

如果您决定使用password\u hash()或crypt,请务必注意,如果当前密码列的长度小于60,则需要将其更改为60(或更高)。手册建议长度为255。

您需要更改列的长度,并使用新的哈希重新开始,以便它生效。否则,MySQL将无声地失败。

 类似资料:
  • 我试图一次将多行插入数据库。 用户最多可以添加5个新行,以便将血液结果插入数据库。 有一个添加更多按钮允许他们这样做。 我有一个循环来遍历每个条目,但是当我单击submit时,只会提交一个条目。第一,我不确定我哪里出了问题,任何帮助都将不胜感激。 循环在这个代码块的底部,但我不确定这就是问题所在。

  • 我在通过log4net记录到数据库时遇到问题。 < li >用户有权插入数据库 < li >相同的insert语句在Management Studio中有效 < li>log4net确实记录到文件,但不记录到数据库 < li >连接字符串正确(在其他应用程序中相同) 获得了以下配置: 数据库中的两列是: 消息varchar(max)不为空。 级别varchar(50)不为空 谢谢

  • 我是mysql和php的初学者。在这个问题上陷入了困境。不知道问题出在哪里。但是如果我直接执行insert查询,它就会被执行,而如果我从用户那里接受它,它就不会被执行(代码中显示了这一点)。可能问题出在我用来检索用户提交的值的$\u POST[]方法上。我已经提交了两个代码,addbooks。php(用户提交值的表单)和add。php(插入数据库)。

  • 我是android新手,这是我第一次在应用程序中使用room。未执行插入操作或未创建数据库或任何其他错误。 我不知道我做错了什么,所以我需要你的帮助。 此程序正在运行,但未显示任何结果。屏幕上什么都没有显示。 这是我的代码-请让我知道此代码中的错误以及我应该如何更正它。 汽车细节。JAVA 卡多。爪哇- CarListDatabase。JAVA CarRepository.java 公共无效get

  • //我试图创建一个注册表单(html),但在我单击按钮后,php文件似乎不能正确执行,web浏览器显示了上面的php代码,我想知道php有什么问题

  • 我在我的几个应用程序中使用Logback将错误记录到数据库中。现在在我最新的应用程序中,我创建了一个正常使用的日志。但现在应用程序不会将任何内容记录到数据库中。 我正在使用源代码将db appender添加到记录器。代码如下所示: 当我尝试应用程序使用logback.xml文件相同的行为。没有日志写入数据库。有人能帮我吗?