[英]sql command INSERT INTO not working
我正在创建一个网站,并且在将表单中的数据插入到数据库中(使用phpMyAdmin)时遇到错误。 它只是简单地提出了自定义错误“错误”,“抱歉,您的注册失败。 请返回重试。'
我看过许多其他相同问题的问题,但是找不到与我的问题相对应的答案。
<?php include "base.php"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <div id="main"> <?php if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Email'])) { $PlanSize = mysql_real_escape_string($_POST['PlanSize']); $DatePaid = mysql_real_escape_string($_POST['DatePaid']); $AmountPaid = mysql_real_escape_string($_POST['AmountPaid']); $MonthUsage = mysql_real_escape_string($_POST['MonthUsage']); // $currentUser = mysql_query('SELECT * FROM User WHERE Email = "'. mysql_real_escape_string($_SESSION['Email']) . '"') or trigger_error(mysql_error()); $currentUser = ($_SESSION['Email']); $registerquery = mysql_query("INSERT INTO Plan (PlanSize, DatePaid, AmountPaid, MonthUsage, PlanUserID) VALUES('".$PlanSize."','".$DatePaid."','".$AmountPaid."', '".$MonthUsage."','".$currentUser."')"); if($registerquery) { echo "<h1>Success</h1>"; echo "<p>Your account was successfully created. Please <a href=\\"index.php\\">click here to login</a>.</p>"; } else { echo "<h1>Error</h1>"; echo "<p>Sorry, your registration failed. Please go back and try again.</p>"; } } ?> <form method="post" action="Plans.php"> <table class="bill"> <input type="hidden" name="data" value="true" /> <fieldset> <p> <select name="PlanSize" id="PlanSize" placeholder="Plan Size"/> <option value="Small">Small</option> <option value="Medium">Medium</option> <option value="Large">Large</option> <option value="Extra Large">Extra Large</option> </select><p> <input type="text" name="DatePaid" id="DatePaid" placeholder="Date Paid (YYYY-MM-DD)"/><br /> <input type="text" name="AmountPaid" id="AmountPaid" placeholder="Amount Paid"/><br /> <input type="text" name="MonthUsage" id="MonthUsage" placeholder="Data Used"/><br /> <input type="submit" name="Submit" id="Submit" value="Submit" /> </fieldset> </table> </form> </center> </div> </body></html>
注意:我的base.php文档用于连接数据库,并且功能齐全。 我已经使用base.php实现了其他数据库数据插入,因此我知道这不是问题的根源。
非常感谢您的任何帮助
试试看:
$registerquery = mysql_query("INSERT INTO `Plan` (`PlanSize`, `DatePaid`, `AmountPaid`, `MonthUsage`, `PlanUserID`)
VALUES('$PlanSize', '$DatePaid', '$AmountPaid', '$MonthUsage','$currentUser')");
此外,您确定要在相应的列中插入正确的values
吗? $currentUser
是否真的应该进入PlanUserID
列?
在讨论后发表评论:
既然您启用了FK
约束,它应该可以工作,但是让我们检查一下几件事:
您可以通过以下方式进行操作:
SHOW TABLE STATUS WHERE Name = 'table1';
ALTER TABLE table1 ENGINE=InnoDB;
而且,如果一切都失败了,您始终可以先备份父表和子表,然后
truncate
子表并尝试再次建立关系。
您可以随时通过此处提供的类似问题进行更多研究: MySQL-无法添加或更新子行:外键约束失败
似乎您尚未检查$ _POST数组中是否存在'PlanSize'和其他对象。 考虑到您可以只为经过身份验证的用户重新加载页面,而无需通过post方法发送数据。 因此,您进入了第一个条件,但不会在POST数组中创建诸如“ PlanSize”等索引。 预先检查isset:
$ planSize = isset($ _ POST ['PlanSize'])? $ _POST ['PlanSize']:null;
这样尝试
$registerquery = mysql_query("INSERT INTO `Plan` (`PlanSize`, `DatePaid`, `AmountPaid`, `MonthUsage`, `PlanUserID`) VALUES('$PlanSize','$DatePaid','$AmountPaid', '$MonthUsage','$currentUser')");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.