1

我正在为医疗网站创建日历。日历的功能是,如果我点击它的任何日期,如 2013-05-01,它将将该日期添加到数据库中并导航到下一页,我必须选择上午 9 点到下午 6 点之间的时间。例如,如果我选择像上午 9 点这样的任何时间,代码将检查数据库中是否已经存在日期为“2013-05-01”和时间为“09:00:00”的条目,如果它已经存在,我将被重定向到时间页面,并显示该时间已安排的消息,然后我将单击另一个时间,例如“10:00:00”,因此它将再次检查并说数据库中是否没有条目有日期'2013-05-01'和时间'10:00:00'然后它会添加这个条目....

我成功地指出,如果数据库中已经有一个条目,它会给我“这个时间已经安排好”的通知,然后我点击时间“10:00:00”,但它告诉我我的 sql 代码中有一些错误,但我检查了我在 phpmyadmin 中运行的代码,它工作正常......我不知道这是什么问题......

这是我得到的错误:

qry_check 更新失败:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '2013-05-01'' AND time='10:00:00'' 附近使用正确的语法

这是日历页面“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”的条目,那么我会没有得到任何错误,条目将被插入到表中......

4

4 回答 4

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''
于 2013-05-03T17:16:43.767 回答
1

从您的错误代码中,我可以看到两组不同的单引号/或者它们是双重的

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '2013-05-01' -> HERE ' <- AND time='10:00:00' -> HERE ' <-在第 1 行附近使用正确的语法

编辑:

在您的第一个代码中,为什么将 "&" 加倍?

<a href="re_sch_time_selected.php?time=ten&&id=<?php echo $id; ?>&&date=<?php echo $dat ?>">10</a>

它可能会给你这样的结果$_GET['id']data&那搞砸了 SQL 查询,因为你没有使用 mysqli 或转义序列。

于 2013-05-03T17:17:44.040 回答
1

PHP中的双引号用于解析字符串中的变量,所以

"SELECT * FROM patient WHERE date='$dat' AND time='09:00:00'"

很好。根据它修复所有查询,你会很高兴的。

于 2013-05-03T17:24:43.157 回答
0

您的sql命令中有额外的撇号。由于它似乎没有出现在您的问题代码中,因此您可能没有在输入表单中向我们展示。

要进行调试,请将 case 语句的前 2 行更改为:

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);
于 2013-05-03T17:25:50.440 回答