-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 ' , , '',128745)' at line 1

我已经使用过isset()!empty()功能。我所有的变量都在使用之前被声明。我也搜索了很多,仍然无法解决这个问题。请帮助我。我被困在这里。任何帮助对我都有很大用处。谢谢。

这是代码:

<?php

$authorized = false;
session_start();
include('config.php');

if(isset($_SESSION['crnumbers']) && isset($_SESSION['passwords']))
{
    $authorized = true;

    if(isset($_POST["submit"]) && !empty($_POST["submit"]))
    {
        $ScdDate = mysql_real_escape_string($_POST['ScdDate']); 
        $ScdMonth = mysql_real_escape_string($_POST['ScdMonth']); 
        $ScdYear = mysql_real_escape_string($_POST['ScdYear']); 
        $DName = mysql_real_escape_string($_POST['DName']) ; 
        $ScdTime = mysql_real_escape_string($_POST['ScdTime']); 
    }

    $crnumber = mysql_real_escape_string($_SESSION['crnumbers']);

    $sql = mysql_query("INSERT INTO schedule(ScdDate,ScdMonth,ScdYear,ScdTime,crnumber,DName)VALUES($ScdDate, $ScdMonth, $ScdYear, '$ScdTime', $crnumber, '$DName')");

    if(!$sql) 
    {
        die('There is some error. Damn it! ' .mysql_error());
    }

    header("location: http://localhost/Alok/Health%20Care%20Project\GUI\patientGUI2.php");

}

else if(!$authorized)
{
    header("location:");
    exit();
}
?>
4

3 回答 3

1

看起来,问题在于 INSERT 查询中使用的变量不包含有效数据,并且可能设置为空,因此会破坏 INSERT 查询。

您可以在此处使用 2 个选项:

A] 尝试使用下面的赋值语法;如果它不为空,则设置给定值,否则将其设置为 0

$ScdDate = (!empty($_POST['ScdDate'])) ? mysql_real_escape_string($_POST['ScdDate']) : 0;
$ScdMonth = (!empty($_POST['ScdMonth'])) ? mysql_real_escape_string($_POST['ScdMonth']): 0;
$ScdYear = (!empty($_POST['ScdYear'])) ? mysql_real_escape_string($_POST['ScdYear']) : 0;
$DName = (!empty($_POST['DName'])) ? mysql_real_escape_string($_POST['DName']) : '';
$ScdTime = (!empty($_POST['ScdTime'])) ? mysql_real_escape_string($_POST['ScdTime']) : '';

B] 在查询中将所有值括在单引号中

$sql = mysql_query("INSERT INTO schedule(ScdDate,ScdMonth,ScdYear,ScdTime,crnumber,DName)VALUES('$ScdDate', '$ScdMonth', '$ScdYear', '$ScdTime', '$crnumber', '$DName')");

希望以上对您有所帮助!

顺便说一句,问题中给出的错误可能与查询不同步;查询中的最后一个值是用单引号括起来的 $DName,但错误中的最后一个值没有用单引号括起来。我可能是不正确的;-)

于 2013-07-14T16:58:21.593 回答
0

您正在检查$_POST["submit"]存在,但不是$_POST["ScdTime"]'s. 这就是为什么保留通知的原因。关于您的 MySQL 错误,评论让您的问题得到了很好的回答。

您需要在代码稍后可能使用的每个变量上使用 isset() :)

<?php
if(isset($_POST["submit"])) &&
   isset($_POST['ScdDate']) && 
   isset($_POST['ScdMonth']) &&
   isset($_POST['ScdYear']) &&
   isset($_POST['DName']) &&
   isset($_POST['ScdTime']))
      // We're good!
于 2013-07-14T16:21:38.423 回答
-1

正确的方法是: if(array_key_exists('crnumbers', $_POST)) {}

还要确保检查所有数组键。这导致了第二个错误。

于 2013-07-14T16:38:06.270 回答