【发布时间】:2016-07-02 04:56:15
【问题描述】:
我的 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';
}
}
【问题讨论】:
-
mysqli_error给你什么?此外,您的代码很容易受到 SQL 注入:您应该开始使用带有占位符的预准备语句以避免这种暴露。 -
因为你在主键
VALUES (' ',中插入空格 -
您好,感谢您的快速回复,感谢您的建议。我刚刚开始学习 sql 和 php,所以这对我来说更像是一个开始练习,但会考虑查看你所说的内容。没有错误显示。我已经寻找了与此类似的其他帖子,其中大多数都与引号的使用有关……所以这是我的 $sql 变量打印的示例:INSERT INTO users (ID, name, lastname, e-mail,用户名、密码) VALUES (' ','Bill' ,'Gates' ,'bill.gates@microsoft.com' ,'bill' ,'bill01');
-
正如Saty 所指出的,您正在插入一个空格作为您的主ID。您的 ID 字段很可能设置为“自动递增”,这意味着您可以简单地从插入中完全省略它,
INSERT .... (name, ....) VALUES('JOHN', ....就像这样。 -
谢谢,我删除了空间,但仍然无法正常工作。我还尝试为该值键入 NULL 而不是对 ID 列使用空字符串,但仍然没有成功。还尝试从插入中删除 ID,但仍然无法正常工作(列和值)
标签: php mysql database sql-insert insert-into