我正在为医疗网站创建日历。日历的功能是,如果我点击任何一个日期,如2013-05-01,它会将该日期添加到数据库并导航到下一页,我必须在上午9点到下午6点之间选择时间。如果我选择像9am这样的任何时间,例如,一个代码将检查数据库中是否已经有一个日期'2013-05-01'和时间'09:00:00'的条目,如果它已经存在,我将被重定向到时间页面,并显示此时间已经安排的消息,然后我会点击另一个时间,如'10:00:00',它将再次检查并说出数据库中是否没有条目如果日期'2013-05-01'和时间'10:00:00'则会添加此条目....
我成功地说明了如果数据库中已有条目,它会给我通知'这次已经安排',然后我点击时间'10:00:00'但是它告诉我,我的sql代码中有一些错误,但我检查了我在phpmyadmin运行的代码,它工作正常....我不知道那是什么问题....
这是我得到的错误:
qry_check更新失败:您的SQL语法出错;校验 与您的MySQL服务器版本对应的手册 要在'2013-05-01''和'时间= '10:00:00''第1行附近使用的语法
以下是日历页面're_sch_time.php'的代码
<?php
if(isset($_GET['result']))
{
$result=$_GET['result'];
if($result=='false')
{
echo "<p>Sorry! This time is already selected for appointment</p>";
}
else
{
echo "<p>Appointment Reschedualed</p>";
}
}
?>
<?php
if(isset($_GET['id']))
{
$id=$_GET['id'];
}
if(isset($_GET['date']))
{
$dat=$_GET['date'];
}
?>
<a href="re_sch_time_selected.php?time=nine&&id=<?php echo $id; ?>&&date=<?php echo $dat ?>">9</a>
<a href="re_sch_time_selected.php?time=ten&&id=<?php echo $id; ?>&&date=<?php echo $dat ?>">10</a>
以下是我们可以选择时间的页面代码're_sch_time_selected.php'
<?php
if(isset($_GET['time']))
{
$time=$_GET['time'];
if(isset($_GET['id']))
{
$id=$_GET['id'];
}
if(isset($_GET['date']))
{
$dat=$_GET['date'];
}
switch($time)
{
case "nine":
$qry_check=mysql_query("SELECT * FROM patient WHERE date='".$dat."' AND time='09:00:00'");
if(!$qry_check)
{
die("qry_check update failed ".mysql_error());
}
else
{
while($time_check=mysql_fetch_array($qry_check))
{
echo $time_check['time'];
$pos=strpos($time_check['time'],'09:00:00');
if($pos===false)
{
$qry_time=mysql_query("UPDATE patient SET time='09:00:00' WHERE id='".$id."'");
if(!$qry_time)
{
die("qry time update failed:".mysql_error());
}
else{
header("Location: re_sch_time.php?result=true&id='".$id."'&date='".$dat."'");
}
}
else{
header("Location: re_sch_time.php?result=false&id='".$id."'&date='".$dat."'");
}
}// while time check ends here
}
break;
case "ten":
$qry_check=mysql_query("SELECT * FROM patient WHERE date='".$dat."' AND time='10:00:00'");
if(!$qry_check)
{
die("qry_check update failed: ".mysql_error());
}
else
{
while($time_check=mysql_fetch_array($qry_check))
{
echo $time_check['time'];
$pos=strpos($time_check['time'],'10:00:00');
if($pos===false){
$qry_time=mysql_query("UPDATE patient SET time='10:00:00' WHERE id='".$id."'");
if(!$qry_time){
die("qry time update failed:".mysql_error());
}else{
header("Location: re_sch_time.php?result=true&id='".$id."'&date='".$dat."'");
}
}
else{
header("Location: re_sch_time.php?result=false&id='".$id."'&date='".$dat."'");
}
}// while time check ends here
}
break;
}
注意: 当我选择一个不在数据库中的日期和时间时,这个代码运行得很好,就好像没有条目有日期'2013-05-01'和时间'09:00:00'然后我不会得到任何错误,该条目将被插入表格....
答案 0 :(得分:1)
你已经在某处撇了撇号,因为它在错误信息中非常清楚。仔细观察每个日期之后有一个双撇号。
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2013-05-01'' AND time='10:00:00''
答案 1 :(得分:1)
从错误代码中,我可以看到两组不同的spostrophes /或者它们是dubled
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在“2013-05-01”附近使用正确的语法 - >&gt; HERE'&lt; - AND time = '10:00:00' - &gt;这是第1行< -
修改强>
在你的fisrt代码中,为什么你加倍了“&amp;” ?
<a href="re_sch_time_selected.php?time=ten&&id=<?php echo $id; ?>&&date=<?php echo $dat ?>">10</a>
它可能会在$_GET['id']
这样的结果中为您提供结果:data&
并且混乱了SQL查询,因为您没有使用mysqli或转义序列。
答案 2 :(得分:1)
PHP中的双引号用于解析字符串中的变量,所以
"SELECT * FROM patient WHERE date='$dat' AND time='09:00:00'"
非常好。根据这个修复所有查询,你会很高兴。
答案 3 :(得分:0)
您的sql
命令中有额外的撇号。由于它似乎没有显示在您的问题代码中,因此它可能是您未向我们展示的输入表单。
要进行调试,请将case语句的前两行更改为:
case "ten":
$sql_statement = "SELECT * FROM patient WHERE date='" . $dat . "' AND time='10:00:00'";
echo $sql_statement; //added to see what is being inserted into the database
$qry_check = mysql_query($sql_statement);