Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尽管使用了isset(),但仍然需要注意:第25行的C:\wamp\…\AppointRequest2.php中的未定义变量:ScdTime_Php_Html_Mysql - Fatal编程技术网

尽管使用了isset(),但仍然需要注意:第25行的C:\wamp\…\AppointRequest2.php中的未定义变量:ScdTime

尽管使用了isset(),但仍然需要注意:第25行的C:\wamp\…\AppointRequest2.php中的未定义变量:ScdTime,php,html,mysql,Php,Html,Mysql,我也得到了这个错误: 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()函数。我的所有变量在使用前都已声明。我也搜索了很多,仍然无法解决这个问题。请帮帮我。我被困在这里了。任何帮助

我也得到了这个错误:

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();
}
?>

您正在检查
$\u POST[“提交”]
是否存在,但没有检查
$\u POST[“ScdTime”]
。这就是为什么通知仍然存在。关于你的MySQL错误,评论让你的问题得到了很好的回答

您需要对以后可能在代码中使用的每个变量使用isset()

正确的方法是:
如果(数组\键\存在('crnumbers',$\ POST)){}


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

问题似乎在于插入查询中使用的变量不包含有效数据,可能被设置为空,从而中断插入查询

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

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,但错误中的最后一个值不是用单引号括起来的。但是我可能不正确;-)

如果设置了$\u POST,则您正在转义。但是每次都会发送SQL查询。请更好地缩进您的代码-这篇文章很混乱,可能在原文中也是如此。但是您没有做
isset($\u POST['ScdTime'])
所以您误解了这个概念,所有这些$\u POST变量在使用之前也需要检查。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。现在我已经为它们中的每一个设置了
isset($\u POST[''])
。仍然得到相同的错误。对不起,这里的凹痕太乱了。这是我的第一个问题,我现在明白了。现在有什么建议吗@“尽管使用isset”是什么意思?您没有检查有问题的变量。您不了解isset检查的目的。如果没有设置必要的变量,那么不管怎样,像一辆没有轮胎的汽车那样在三行之后盲目地遍历mysql_查询是行不通的。如果设置了变量,则使用它们;如果不是,则替换默认值或不执行查询。请注意,您的查询在日期、月份和年份变量上存在SQL注入漏洞,因为它们没有被引用(这是使用PDO可以防止的)。但我仍然得到了未定义变量的相同错误。都在mysql_query()行中。之前是在第20行,现在是第25行,5行之后是第25行,有什么建议吗?不是A]或B],两者都有。他需要做这两件事,但这似乎不是因为在原始的INSERT查询中,某个整数字段似乎被设置为空白,因此中断了查询。因此,如果编码器确保避免这些空白值(如[A]中所建议的),则不应显示错误。否则,请在查询中用单引号将所有值括起来,以避免使用两个相邻的逗号(如[B]中所建议的那样)。好的,我同时使用了这两个逗号。现在我没有收到任何先前的错误,但是整个会话被重定向到第二个URL,就好像会话没有被注册一样。有什么建议吗?嗯,那可能是因为代码末尾有一个重定向语句是的,我明白了。但是为什么第一个重定向语句不起作用呢?为什么会话未注册?插入查询没有发生吗?请帮忙,我真的很感激。
$sql = mysql_query("INSERT INTO schedule(ScdDate,ScdMonth,ScdYear,ScdTime,crnumber,DName)VALUES('$ScdDate', '$ScdMonth', '$ScdYear', '$ScdTime', '$crnumber', '$DName')");