gpt4 book ai didi

php - 将数据插入数据库不起作用(PHP-SQL)

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:28 25 4
gpt4 key购买 nike

我的 PHP 代码中的插入数据 sql 命令不起作用。有人可以帮忙吗?

我有一个注册表单,它从输入字段(姓名、姓氏、电子邮件、用户名和密码)中获取值

用户在此字段中输入的值应保存到我的表“用户”中,其中包含列(ID [这是主键/INT]、姓名[TEXT]、姓氏[TEXT]、电子邮件[VARCHAR ]、用户名[VARCHAR] 和密码[VARCHAR])。

这是我当前的代码:

if (isset ($_POST['name'],$_POST['lastname'],$_POST['email'],$_POST['username'], $_POST['password']))
{
//connect to database
$conn = mysqli_connect ('localhost', 'root', '', 'test_database');

if ($conn)
{
$sql="SELECT username FROM users WHERE username = '" . $_POST['username'] . "';";
$query = mysqli_query ($conn, $sql);
$result = mysqli_fetch_array ($query);

if ($result ['username'])
{
header ('Location: ' . $_SERVER['PHP_SELF'] . '?errno=1');
}
else
{
$sql="INSERT INTO users (ID, name, lastname, e-mail, username, password) VALUES (' ','" .$_POST['name'] . "' ,'" . $_POST['lastname']. "' ,'" . $_POST['email']. "' ,'" . $_POST['username']. "' ,'" . $_POST['password']. "');";
mysqli_query ($conn, $sql);
mysqli_close ($conn);
//registration completed, redirect to index page
//header ('Location:index.php?reg=1');

}
}

else
{
echo 'connection error';
}

}

最佳答案

除了在空格 VALUES (' ', for the ID column etc., your email column name contains a hyphen and interpreted作为 e MINUS mail 和数学运算。

将其重命名为 e_mail 或在其周围打勾。

`e-mail`

阅读以下有关标识符限定符的内容:

在查询中使用 mysqli_error($conn) 会引发语法错误。

旁注:出于多种原因,您应该转义数据,其中之一是为了防止 SQL 注入(inject),如果您的数据可能包含 MySQL 可能会提示的字符,例如 John's Bar & Grill举个例子。


您现在的密码是开放给SQL injection .使用 prepared statements , 或 PDOprepared statements .


密码

我还注意到您可能以明文形式存储密码。不建议这样做。

使用以下之一:

其他链接:

关于列长度的重要旁注:

如果您决定使用 password_hash() 或 crypt,请务必注意,如果您当前的密码列的长度低于 60,则需要将其更改为(或更高)。手册建议长度为 255。

您需要更改列的长度并使用新的散列重新开始才能生效。否则,MySQL 将无提示地失败。

关于php - 将数据插入数据库不起作用(PHP-SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36033523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com