当前位置: 首页 > 面试题库 >

PHP:将值从表单插入MySQL

纪晨
2023-03-14
问题内容

我从终端创建了一个users表,mysql然后尝试创建简单的任务:从表单中插入值。这是我的dbConfig file

<?php
$mysqli = new mysqli("localhost", "root", "pass", "testDB");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
?>

这是我的Index.php

<!doctype html>
<html>
 <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="description" content="$1">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="stylesheet" type="text/css" href="style.css">

    <title>test</title>

    <?php
    include_once 'dbConfig.php';
    ?>

</head>
<body>
     <?php
    if(isset($_POST['save'])){
        $sql = "INSERT INTO users (username, password, email)
        VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')";
    }

    ?>

    <form method="post"> 
    <label id="first"> First name:</label><br/>
    <input type="text" name="username"><br/>

    <label id="first">Password</label><br/>
    <input type="password" name="password"><br/>

    <label id="first">Email</label><br/>
    <input type="text" name="email"><br/>

    <button type="submit" name="save">save</button>
    <button type="submit" name="get">get</button>
    </form>

</body>
</html>

按下我的保存按钮后,什么也没有发生,数据库仍然为空。我尝试echo'ingINSERT查询,它按照预期的方式从表单中获取所有值。在尝试从终端检查是否可以正常工作后,我登录到sql尝试从users表返回所有数据的操作,但得到了空集。


问题答案:

以下代码仅声明了一个包含MySQL查询的字符串变量:

$sql = "INSERT INTO users (username, password, email)
    VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')";

它不执行查询。为此,您需要使用一些功能,但让我先解释一下其他内容。

永远不要信任用户输入 :永远不要将用户输入(例如来自$_GET或的表单输入$_POST直接
附加到查询中。有人可以以这种方式小心地操作输入,以免对您的数据库造成严重损害。这就是所谓的SQL注入。

为了保护您的脚本免受此类攻击,您 必须 使用预处理语句。在这里更多关于准备好的陈述

将准备好的语句包括在您的代码中,如下所示:

$sql = "INSERT INTO users (username, password, email)
    VALUES (?,?,?)";

请注意如何将?用作值的占位符。接下来,您应该使用mysqli_prepare以下语句准备语句:

$stmt = mysqli_prepare($sql);

然后开始将输入变量绑定到准备好的语句:

$stmt->bind_param("sss", $_POST['username'], $_POST['email'], $_POST['password']);

最后执行准备好的语句。(这是实际插入的地方)

$stmt->execute();

注意 尽管不是问题的一部分,但我强烈建议您不要以明文形式存储密码。相反,您应该使用password_hash存储密码的哈希值



 类似资料:
  • 问题内容: 我从终端创建了一个表,然后尝试创建简单的任务:从表单中插入值。这是我的 这是我的。 按下我的保存按钮后,什么也没有发生,数据库仍然为空。我尝试了查询,当它被认为它从形式的所有值。在尝试从终端检查是否可以正常工作后,我登录到尝试从用户表返回所有数据的操作,但得到了空集。 问题答案: 以下代码仅声明了一个包含MySQL查询的字符串变量: 它不执行查询。为此,您需要使用一些功能,但让我先解释

  • 问题内容: 我开发了一种将许多东西插入数据库的表单。但是以某种方式,当页面被填满时,它也只插入数据库管理员的user_password。我该如何解决这个问题? 问题答案: 您忘记输入关键字“ VALUES”。检查INSERT INTO的语法。 您传递给MySQL的变量(“ $ name”,“ $ password”,“ $ email”,“ $ contact”,“ $ age”,“ $ gend

  • 我正在尝试将用户在表单中输入的值插入数据库。 我有两个下拉列表用于血液测试,然后是分类。例如,用户首先选择下拉列表1“甲状腺”(类别),然后下拉列表2显示“FT4、FT3 TSH”(血液检测)等,用户进行选择。 然后他们输入日期和值。 在我的insert中,我需要在我的数据库中插入用户id(在使用会话变量登录后建立)、血液测试id(从下拉列表2)、日期和值。 我不能得到我的SQL查询正确的插入一般

  • 问题内容: 我有这段代码可以从“ jobseeker”表中选择所有字段,并可以通过将userType设置为“ admin”来更新“ user”表,其中userID =$ userID(此userID是我用户中的一个用户数据库)。然后,该语句应将这些值从“ jobseeker”表插入到“ admin”表中,然后从“ jobseeker表”中删除该用户。sql表很好,我的语句正在将userType更改

  • 最后编辑:现在一切正常工作将在下面的工作代码,清理后像idealCastle说,并修复了一些语法错误,一切正常工作,因为它应该与javascript验证谢谢大家 超文本标记语言代码: Javascript文件: PHP文件:

  • 问题内容: 如何将上面插入语句中填充的标识值()插入表(另一个表)中 任何人都可以解释一下如何对更大的记录集(成千上万条记录)实施此操作吗? 我们可以使用loop和吗?如果是这样,请说明我们该怎么做? 如果我从选择查询中插入#test,会发生什么情况? 插入#test(b,c)中,从…中选择…(成千上万条记录) 我将如何捕获身份值并将该值用于另一个(#sample)插入#sample(e,f)插入