【发布时间】:2015-08-21 19:53:13
【问题描述】:
我正在创建一个网站,但在将表单中的数据插入我的数据库时遇到了错误(使用 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 实现了其他数据库数据插入,所以我知道这不是问题的根源。
非常感谢您的任何帮助
【问题讨论】:
-
不要使用mysql_ functions - 主要是因为 SQL 注入,尽管这也可能有助于您处理错误。你想知道那个过时的代码失败了,然后看看:mysql_error
-
@ficuscr 是对的,但如果你坚持使用它(不推荐),请将
or die (mysql_error());附加到你的mysql_query()以获得更准确的错误 -
无法添加或更新子行:外键约束失败 (
hb00294.bill, CONSTRAINTbill_ibfk_1FOREIGN KEY (PlanUserID) REFERENCESUser(UserID) ) - 添加或死亡!感谢您提供或死的提示。不知道如何处理。 -
@Hans 如果外键定义为
NOT NULL,那么您必须在INSERT查询中提供它。尝试在您的数据库表中进行更改,例如ON DELETE RESTRICT ON UPDATE CASCADE。 -
我必须提供它,即使我将它指定为 AUTO_INCREMENT?另外,如何使表像 ON DELETE RESTRICT ON UPDATE CASCADE 一样?我是否将 CREATE TABLE 更改为 (BillID INT NOT NULL ON DELETE RESTRICT ON UPDATE CASCADE UNIQUE AUTO_INCREMENT, ?