我从终端创建了一个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'ing
了INSERT
查询,它按照预期的方式从表单中获取所有值。在尝试从终端检查是否可以正常工作后,我登录到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)插入