【问题标题】:Error!: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version错误!:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册
【发布时间】:2016-12-14 00:15:56
【问题描述】:

我正在尝试创建一个注册表单,用户将他的:用户名和密码放入两个不同的文本框中,单击按钮,它会存储用户并传入我的数据库中的文本框。

我目前收到此错误(已更新):

错误!:无法添加或更新子行:外键约束失败(ctollins_TRTdesign.USER,CONSTRAINT fk_USER_custID FOREIGN KEY (custID) REFERENCES CUSTOMER (custID) ON DELETE更新级联时级联)

$con = mysql_connect('localhost','ctollins1','Apples11');
$db = mysql_select_db('ctollins_TRTdesign', $con);


$sql="INSERT INTO USER (userName, userPassword)
VALUES
('$_POST[uname]','$_POST[pass]')";
 
if (!mysql_query($sql,$con))
  {
  die('Error!: ' . mysql_error());
  }
echo "1 new client added";
 
mysql_close($con)

【问题讨论】:

  • 我很困惑。你在这里做什么"INSERT INTO USER ($userName, $pass) VALUES ('$_POST[uname]','$_POST[pass]')"?这也是不好的做法,因为您没有对用户密码进行哈希处理,并且对 SQL 注入开放(很好的配对)。
  • @chris85 我正在为此上学的第一年,所以我不太了解,仍在学习。任何建议/修复将不胜感激
  • $row 是什么,你在其他地方定义过吗?你想使用mysql_*吗? mysqli_PDO 驱动程序是当前用于 mysql 交互的首选驱动程序。
  • RTM!第一个括号描述要插入的列,而不是值。 (mysql现在正在尝试查找列123123,但是由于列不能只有数字,所以这是一个错误)
  • INSERT INTO USER (columnForUserName, columnForPassword)...

标签: php mysql database


【解决方案1】:

而不是使用

INSERT INTO USER ($userName, $pass)......

在您的代码中。请使用您存储用户名和密码的列名。我的意思是表列名如下。

INSERT INTO USER (column-name-for-username-from db-table, column-name-for-password-from db-table).........

【讨论】:

  • 我试过了,现在我得到“无法添加或更新子行:外键约束失败 (ctollins_TRTdesign.USER, CONSTRAINT fk_USER_custID FOREIGN KEY (@987654326 @) REFERENCES CUSTOMER (custID) ON DELETE CASCADE ON UPDATE CASCADE)"
  • 这里是更新的代码。抱歉,我不知道如何在 stackoverflow cmets 中构造代码,也许有人可以清理一下: $con = mysql_connect('localhost','ctollins1','Apples11'); $db = mysql_select_db('ctollins_TRTdesign', $con); $sql="INSERT INTO USER (userName, userPassword) VALUES ('$_POST[uname]','$_POST[pass]')"; if (!mysql_query($sql,$con)) { die('Error!: ' .mysql_error()); } echo "添加了 1 个新客户端"; mysql_close($con)
  • 这意味着从您的 USER 表中,custID 引用 CUSTOMER 表的 custID。因此,在插入时,您需要保持与有效 custID 的关系。根据您的评论。
  • 啊,我明白了,所以在这种情况下,我假设我应该以某种方式为每个客户创建一个新 ID?
  • 是的,因为您的 USER 和 CUSTOMER 表是相关的,并且在删除时也是级联的。看看“外键约束”——MySQL/PHP。
猜你喜欢
  • 2014-01-27
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 1970-01-01
相关资源
最近更新 更多