我无法将数据插入MySQL数据库。我不知道原因,因为没有错误被触发。我在Windows上使用XAMPP运行本地服务器。这是代码。如果有人可以帮助,那就太好了。

我总是收到“未插入值”输出。当我获得通过SQL查询的VALUES('$ email',...)部分中的表单输入的确切值时,我也尝试打印$ query。

<?php


$dbconnect = mysqli_connect("localhost","root","","id3626001_login_details");

if (!$dbconnect)
{
    die("Connection Failed" .mysqli_connect_error());
}

if (!mysqli_select_db($dbconnect, "id3626001_login_details"))
{
    echo "Could not connect to Database";
}

if (isset($_REQUEST['username']) && ($_SERVER["REQUEST_METHOD"] == "POST")){

$username = $_REQUEST['username'];
$email = $_REQUEST['email'];
$password = $_REQUEST['password'];

// Inserting values into the database through a query
$query = "INSERT INTO user_registration (ID, email, username, password) VALUES ('$email', $username', '".md5($password)."')";

if (!mysqli_query($dbconnect, $query))
{
    echo "Values not inserted";
}

$result = mysqli_query($dbconnect, $query);

if($result){
    echo "Registration Successful";
    }
}
?>

最佳答案

您的查询有问题,

1)您传递的列数和值必须相同

2)您忘了放'(在$username'前加引号

将您的查询更改为

// Inserting values into the database through a query

$query = "INSERT INTO user_registration ( email, username, password) VALUES ('$email', '$username', '".md5($password)."')";


测试时,不仅应仅打印查询,还应复制该查询并通过[[localhost / phpmyadmin)>选择数据库> SQL直接将其运行到数据库中,并查看触发查询时在那里显示了什么错误。

更新

对于@Akintunde的建议

出于安全方面的考虑,您不应该使用对SQL injections完全开放的这类插入方法,必须遵循一些规则,以避免使脚本成为sql注入的目标

使用Prepared Statements代替进行数据库操作

关于php - 无法使用PHP将数据插入MySQL数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47385484/

10-12 16:19
查看更多