php - 数据未使用 php 插入 sqlite3 数据库
问题描述
嗨,伙计们,我有一个名为 signup.db 的 sqlite 数据库和一个注册表,我有一个注册页面的 php 代码,但我们没有在提交时插入任何数据我也没有收到 Amy 错误即使点击提交 *不要介意 SQL 注入,这只是测试我将在制作下一个项目代码时使用 SQL 准备好的语句
<?php
if(isset($_POST['submit'])){
//connection to sqlite3 database
$dir = 'sqlite: sign.db';
$db = new PDO($dir) or die ("Unable to open");
//select table
//saving data
$email = $_POST["Email"];
$first = $_POST["First"];
$last = $_POST["Last"];
$password = $_POST["Password"];
$male = $_POST["Male"];
$female = $_POST["Female"];
$date = $_POST["Dateofb"];
$sql = "INSERT INTO Signup (First, Last, Email, Password, Male, Female, Dateofb) VALUES ('$first', '$last', '$email', '$pass', '$male', '$female', '$date');";
$sql->execute();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="index.css" >
<script src="index.js" ></script>
<title>Survey</title>
</head>
<body>
<form action="" method="post" >
<div class="container" >
<div class="form" >
<input type="email" class="first" id="email" placeholder="Email" required="required">
<input type="text" class="second" id="first" placeholder="First name" required="required">
<input type="text" class="last" id="last" placeholder="Last name" required="required">
<input type="password" class="pass" id="pass" placeholder="Password" required="required">
<div class="day" >
<p class="bd" >Birthday Date:</p>
<input type="date" class="date" id="date" >
</div>
<div>
<div class="malee" >
<input type="checkbox" class="male" id="male" >
<p class="mal" >Male</p>
</div>
<div class="femalee" >
<input type="checkbox" class="female" id="female" >
<p class="fem" >Female</p>
</div>
</div>
<div >
<input class="submit" id="submit" type="submit" >
</div>
<div class="acc" >
already have account <a href="#" >Login</a>
</div></div>
</div>
</form>
</body>
</html>
解决方案
您的代码有两个问题:
- 您应该查询数据库连接
$db->exec($sql);
- 在 $sql 字符串中
$pass 应该是 $password
$sql = "INSERT INTO Signup (First, Last, Email, Password, Male, Female, Dateofb)
VALUES ('$first', '$last',
'$email', ******'$pass'*******, '$male', '$female', '$date');";
我为你创建了沙盒。工作正常。您可以将此代码复制到单独的 test.php 文件中并尝试运行它
检查此沙箱
<?php
try {
$conn = new PDO("sqlite: sign.db");
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$email = "test2";
$first = "";
$last = "";
$password = "";
$male = "";
$female = "";
$date = "";
$sql = "CREATE TABLE IF NOT EXISTS Signup (
First text NOT NULL,
Last text NOT NULL,
Email text NOT NULL,
Password text NOT NULL,
Male text NOT NULL,
Female text NOT NULL,
Dateofb text NOT NULL
);";
$conn->exec($sql);
$sql = "INSERT INTO Signup (First, Last, Email, Password, Male, Female, Dateofb) VALUES ('$first', '$last', '$email', '$password', '$male', '$female', '$date');";
$conn->exec($sql);
echo "New record created successfully \n";
$sql = "SELECT * FROM Signup";
$result = $conn->query($sql);
while ($row = $result->fetch()) {
echo $row['Email']."\n";
}
} catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
?>
推荐阅读
- rest - REST 的响应(通过 Powershell 发布)不完整
- linux - 我无法获得 sftp get 命令来重命名我正在下载的文件
- redis - Redis - 如何将zrange查询的结果存储为另一个有序集
- spring-boot - 在 CORS spring security + webFlux 中启用通配符
- javascript - 如何有效地将数组中的每个值与其他值进行比较?
- javascript - 如何使用 ReactJS 避免递归方法中的许多重新渲染
- mysql - PowerApps MySl - 下拉问题
- reactjs - 从 HashRouter 更改为 browserRouter 后,React router 4 路由停止工作
- r - R中不同行中相同字符串的总和
- php - 在父子类别中显示父子类别的其他子类别