我已经在计算机上安装了 xampp ,并且创建了一个名为 user_data 的数据库和一个名为 mydb 的表。网站(包含表单)已连接到服务器,并且我的数据库被选中,但表单数据未插入表中。
我经历了这个答案PHP: Inserting Values from the Form into MySQL,但是由于答案使用的是预备语句,因此并没有太大帮助。我刚刚开始学习,所以我不想使用它们。
HTML
<form action="http://localhost:8080/test.php" method="post">
<div>
<input type="email" name="email">
</div>
<div>
<input type="password" name="password">
</div>
<a href=""><button type="submit">CONTINUE</button></a>
</form>
PHP
<?php
$host = 'localhost';
$username = 'root';
$password = '';
$db = 'user_data';
$con = mysqli_connect($host, $username, $password, $db);
if ($con) {
echo "connected successfully";
}
if(!mysqli_select_db($con, $db)) {
echo "Database not selected";
}
$email = $_POST['email'];
$password = $_POST['password'];
$sql = "INSERT INTO mydb (email, password) VALUES ('$email', '$password')";
$query = mysqli_query($con, $sql);
if ($query) {
echo 'data inserted succesfully';
}
else {
echo 'failure';
}
?>
当我在浏览器中运行php时,我得到以下输出:
连接成功失败
我在PHP和SQL方面是一个完整的菜鸟,对出什么问题不太了解。我非常感谢社区提供的任何帮助。
答案 0 :(得分:0)
我们都必须从某个地方开始... 我建议养成准备语句和清理输入内容的习惯,因为它是额外的安全层,
这是使用PDO而不是您正在使用的Mysqli,但是两者非常相似,可以很容易地转换。
希望这会有所帮助。
try
{
$host ='host';
$dbname = 'databaseName';
$un = 'username';
$pw = 'password';
$connectionString = new PDO ("mysql:host=$host;dbname=$dbname;charset=UTF8mb4",$un,$pw);
echo "Connection Successful";
}
catch (PDOException $ex)
{
Die("Connection Failed");
}
// Sanitize inputs
$email = (filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL));
$password = $_POST['password'];
// prepare the statement (Prevents SQL injection)
$query = $connectionString->prepare
("
INSERT INTO TableName (col1, col2)
VALUES(:email, :password)
");
// Binds the parameters (input variables to the insert statement)
$success = $query->execute
([
'email' => $email,
'password' => $password
]);
// If rows returned is more than 0 Let us know if it inserted or not.
$count = $query->rowCount();
if($count > 0) // more than 0 rows were effected
{
echo "Insert Successful";
}
else
{
echo "Insert Failed";
}