代码正确时在mysql中获取错误

时间:2013-05-03 17:11:04

标签: php mysql sql

我正在为医疗网站创建日历。日历的功能是,如果我点击任何一个日期,如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'然后我不会得到任何错误,该条目将被插入表格....

4 个答案:

答案 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);