您好我在预约预约数据库时遇到问题。我被困在这3天了,我不知道该怎么办。我有各种长度的约会,我使用PHP POST从表单中检索。然后我尝试用我收到的值更新数据库。我希望阻止用户进行双重预约和预约,而另一个预约。
这是我的数据库 MYSQL DB。
lesson_date_time字段采用DATETIME格式,最大值为6。
表单代码
<form method="post" name="update" action="dtupp.php" />
Email:<br>
<input type="text" name="email" /><br>
Lesson Length:<br>
<input type="text" name="length" /><br>
Start Date<br>
<input type="text" name="date"/><br>
<input type="submit" name="Submit" value="update" />
</form>
我传递给表单的值是
开始日期:2014-11-30 12:41:00
课程长度:60
电子邮件:Fake@aol.com
我的处理器声明
<?php
$mins = $_POST["length"];
$date_start = $_POST["date"];
$date_end = date("Y-m-d H:i:s", strtotime("$date_start + $mins minute"));
$emails = $_POST['emails'];
mysql_connect("localhost", "dk1", "root1") or die("Connection Failed");
mysql_select_db("usersignup")or die("Connection Failed");
$query = " UPDATE bookings SET email = '$emails' WHERE lesson_date_time BETWEEN CAST('$date_start' AS DATETIME) AND CAST('$date_end' AS DATETIME) ";
if(!mysql_query($query)){
die('Could not update data: ' . mysql_error());
}
else{
}
?>
由于某种原因,我无法将值传入数据库。 MYSQL不会返回任何错误。我检查错误报告是否正常工作,错误的引号和MYSQL立即标记我。它不会返回任何错误,但也不会将任何内容发布到数据库中。
答案 0 :(得分:2)
您在此处缺少的关键是有一个条件可以防止覆盖以前的预订。在当前状态下将采取以下形式:
UPDATE bookings SET ... WHERE email IS NULL
这假定email
最初应为NULL
。避免将其设置为钝'none'
或空字符串。
注意,您要避免违反Zero, One or Infinity Rule并遵守正确的database normalization规则:创建一个代表预订个人的表格。即使该表最初仅包含电子邮件地址,它也是实现数据库完整性的重要一步。
然后,您可以插入user_id
,而不是users
表中的记录。这样,如果用户更改了他们的email
地址,您只需要更新一行,而不是知道有多少表的N行。
这建立了一个适当的&#34;一对多&#34;用户和预订之间的关系。从那里你可以构建一个非常强大的应用程序。
答案 1 :(得分:-1)
您的WHERE语句可能没有行。如果您的WHERE语句返回任何内容,则使用SELECT进行调试。
您还可以使用mysql_affected_rows()检查声明中受影响的行。
我还想提一下你应该注意sql注射!