Php MySQL注意:未定义索引:如何解析

Php MySQL注意:未定义索引:如何解析,php,jquery,mysql,Php,Jquery,Mysql,我正在用PHP、MYSQL和JQuery创建两级下拉选择框。一切似乎都很好,但当我的父类别没有子类别,或者如果我没有选择子类别,这会给我带来错误,我无法理解这个错误意味着什么以及如何解决。我需要你的帮助 错误: 注意:第58行C:\xampp\htdocs\pathtofile\index.php中未定义的索引:f_child\u cat 您选择了12&您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“”附近要使用的正确语法 这是我的前端代码 <?php if(is

我正在用PHP、MYSQL和JQuery创建两级下拉选择框。一切似乎都很好,但当我的父类别没有子类别,或者如果我没有选择子类别,这会给我带来错误,我无法理解这个错误意味着什么以及如何解决。我需要你的帮助

错误:
注意:第58行C:\xampp\htdocs\pathtofile\index.php中未定义的索引:f_child\u cat
您选择了12&您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“”附近要使用的正确语法

这是我的前端代码

<?php if(isset($_POST['submit'])){
    $drop = $_POST['first_child_cat'];
    $f_child_cat = $_POST['f_child_cat'];
    echo "You selected ";
    echo $drop." & ".$f_child_cat;

    $query =    mysql_query("SELECT * FROM qa_categories WHERE parentid = $f_child_cat")
                or die(mysql_error());

                echo '<ul>';
                while($cats = mysql_fetch_array( $query ))
                    echo '<li>',$cats['title'],'</li>';

                echo '</ul>';
}
?>

$\u POST['f\u child\u cat']
未定义在使用前先检查值是否存在

$f_child_cat = isset($_POST['f_child_cat'])?$_POST['f_child_cat']:false;

if ($f_child_cat){
    $f_child_cat = mysql_real_escape_string($f_child_cat); // always escape

    /// your query.
}

注意:mysql_*函数是非擦洗的,使用mysqli或pdo作为替代。

这意味着
$\u POST['f_child\u cat']
没有定义(不存在)。您应该使用绑定参数来防止SQL注入,并使用
mysqli
PDO
函数

由于这是查询的一部分,我建议您将查询包装如下:

if( isset($_POST['f_child_cat']) && !empty($_POST['f_child_cat']) ) {
    ... call db
}
else {
    echo "You didn't select this"
}

错误是什么?您从哪里得到的?很抱歉,我刚刚又更新了问题。请你再检查一遍好吗。。谢谢你,我只懂了,但不知道如何解决这个错误?因为这是一个可选的,如果有类别,那么它将在下拉列表中可用,而不是在用户提交时,它将给出错误。此外,若用户偶然未选择二级类别,则也会给出错误。。如何解决?@pixelngrain您必须回答这样一个问题:如果代码为空,您希望代码做什么,因为您将其作为查询的一部分发送。请参阅我的更新。非常感谢您的支持,您的和
Ibu
两个代码都工作得很好。。只是想知道哪个更好?还有一个快速相关的问题,如果数据库中不存在child cat,那么我如何才能不显示第二个下拉列表?@pixelngrain Ibu的回答不会检查
$\u POST['f\u child\u cat']
是否为空(可以定义,但可以为空)嗯。。!我已经使用了你的答案,并且我的代码运行得非常好。。非常感谢。这很好,但要了解的是您的代码更好还是
波兰王子
代码更好。请不要误会我,但我不是那么精通,所以试图从你们专家那里了解。。。因为两个代码都可以正常工作。您需要做的就是检查索引是否已定义,因此
isset($\u POST['f\u child\u cat'])
这将防止错误@Ibu
$\u POST['f\u child\u cat']
可以定义,但可以为空。哦,我知道了!非常感谢你了解我。。真的很感激