php - 如何使用 InsertInto 将经过清理的用户输入存储在数据库中
问题描述
我想将一些用户的输入变量存储到 mysql 中。但是,它们存储为 :username 和 :password 而不是用户的输入。
$username = $_POST['username'];
$password = $_POST["password"];
$conn = new PDO("mysql:host=localhost;dbname=nome", "nome", "password");
$sql = "SELECT * FROM users";
$query = $conn->query($sql);
$result = $query->fetchAll(PDO::FETCH_ASSOC);
$sql = "SELECT * FROM users WHERE username = :username AND password = :password";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":username", $_POST["username"]);
$stmt->bindParam(":password", $_POST["password"]);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($result);
if($username && $password){
$sql = "INSERT INTO users (username, password) VALUES (':username', ':password')";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":username", $_POST["username"]);
$stmt->bindParam(":password", $_POST["password"]);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
}else{
print "Dati non corretti";
};
<h1> Login Form </h1>
<form action="?" method="post"> Name
<input name="username" value="" />
Password
<input name="password" value=""/>
<input type="submit" name="my_form_submit_button"
value="Login" />
</form>
当我检查 phpMyAdmin 表时,变量存储为:用户名和:密码。我想将它们存储为用户的输入。例如,如果用户的用户名输入是 Mark,我想将其存储为 Mark,而不是 :username。
谢谢 !
解决方案
它现在完全可以工作了,将以下代码保存为 php 文件并运行它。
我更改了以下内容。
- INSERT sql 的值
':username'
to:username
和 to 相同':password'
,:password
因为'
单引号在内部转换为字符串并且bindValue
可以跳过它。 ?
从<form action"?"
to中删除<form action""
,它定义了请求页面本身。- 在 php 代码中,我添加了
if($_POST)
语句以检查在将值插入数据库表之前是否存在任何 POST 请求。 - 最后一次更改是在
bindParam
,我添加了PDO::PARAM_STR
作为最后一个变量来发送函数来定义值类型。
<?php
$conn = new PDO("mysql:host=localhost;dbname=nome", "nome", "password");
$sql = "SELECT * FROM users";
$query = $conn->query($sql);
$result = $query->fetchAll(PDO::FETCH_ASSOC);
var_dump($result);
if($_POST){
$username = $_POST['username'];
$password = $_POST["password"];
$sql = "INSERT INTO users (username, password) VALUES (:username, :password)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":username", $_POST["username"], PDO::PARAM_STR);
$stmt->bindParam(":password", $_POST["password"], PDO::PARAM_STR);
$stmt->execute();
}
?>
<h1> Login Form </h1>
<form action="" method="post"> Name
<input name="username" value="" />
Password
<input name="password" value=""/>
<input type="submit" name="my_form_submit_button"
value="Login" />
</form>
推荐阅读
- python - Python - 无法使用 python 从文件夹中删除文件
- ios - 将数据从一个视图控制器传递到同一视图上的另一个视图控制器
- c++ - std::swap 可以交换数组中的两个结构吗
- javascript - 开始运行 jQuery - $ 未定义错误
- java - 通过按钮重置方法中的计数
- watchman - 如何使用 watchman 从父文件夹的子文件夹中观看内容?
- redis - Redis 服务运行几分钟后自动停止
- python - 如何使用python解析从api返回的jsonp
- mysql - 坚持使用 MYSQL 从一张表获取价值到另一张表
- r - 设置用于在 R 中显示数字的全局格式