Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
如何在php中对照表中的数据检查用户输入?_Php_Mysql - Fatal编程技术网

如何在php中对照表中的数据检查用户输入?

如何在php中对照表中的数据检查用户输入?,php,mysql,Php,Mysql,如果用户在表单字段“AddGuestName”中输入数据,我想查询“a_table”,看看是否允许他们添加一个客人。“addguest”列包含一个“Y”,如果他们可以有一个额外的guest,则包含一个“N”。如果不能,我希望显示错误消息,并且在“AddGuestName”字段为空之前不保存数据。不知道我哪里出了问题 我的代码 $Name = check_name($_POST['name'], " Enter Your First and Last Name....Click Your Bro

如果用户在表单字段“AddGuestName”中输入数据,我想查询“a_table”,看看是否允许他们添加一个客人。“addguest”列包含一个“Y”,如果他们可以有一个额外的guest,则包含一个“N”。如果不能,我希望显示错误消息,并且在“AddGuestName”字段为空之前不保存数据。不知道我哪里出了问题

我的代码

$Name = check_name($_POST['name'],
 " Enter Your First and Last Name....Click Your Browsers Back Button To Re-Enter ");    

$RsvpNum = check_input($_POST['RsvpNum'], " Enter The 3 Digit RSVP Number Located On Your RSVP Card....Click Your Browsers Back Button To Re-Enter ");

$AddGuestName = check_rsvp($_POST['AddGuestName'], "You Are Not Allowed An Additional Guest.....Click your Browsers Back Button To Re-Enter");


function check_rsvp($data, $query, $result, $RsvpNum, $AddGuestName, $problem='')<br />
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
   if ($problem && strlen($data) > 0)
    {
mysql_query($query="SELECT addguest FROM a_table WHERE rsvp_num=$RsvpNum");
    $result=mysql_query($query);
    }
    return $data;



    if (($result) == 'N')
        {
            die($problem);
        }
        return $data;
    }
$Name=检查名称($\u POST['Name'],
“输入您的名字和姓氏……单击浏览器后退按钮重新输入”);
$RsvpNum=检查输入($\u POST['RsvpNum'],“输入RSVP卡上的3位RSVP号码…单击浏览器后退按钮重新输入”);
$AddGuestName=检查\u rsvp($\u POST['AddGuestName'],“您不允许添加其他来宾…..单击浏览器后退按钮重新输入”);
函数检查\u rsvp($data、$query、$result、$RsvpNum、$AddGuestName、$problem='')
{ $data=修剪($data); $data=条带斜杠($data); $data=htmlspecialchars($data); 如果($problem&&strlen($data)>0) { mysql_query($query=“从rsvp_num=$RsvpNum的_表中选择addguest”); $result=mysql\u query($query); } 返回$data; 如果(($result)='N') { 死亡(问题); } 返回$data; }
如果,您的意思是在第一个
之后立即返回$data
?我在想不…

我应该吗?因为如果没有在“AddGuestName”中键入任何用户输入,则不需要执行任何操作,但是如果“AddGuestName”字符串长度大于0,则我希望运行mysql语句,查看他们是否具有由“Y”表示的权限在数据库中,将
return
放在
if
后面,每次都会返回该值。现在,在那里放一个
,否则
会达到我认为您期望的效果。小心,您有一个SQL注入漏洞。。如果用户传入AddGuestName,例如“1或1=1”,则将返回所有记录。请注意,stripslashes()在这里对您没有帮助。通常,您会使用addslashes(),但由于查询文本中没有引用输入,因此这对您没有任何帮助您使用两个参数调用check_rsvp(),但函数需要6,其中只有一个参数用默认值标记。这段代码实际运行吗?
$query="SELECT addguest FROM guests WHERE rsvp_num=$RsvpNum LIMIT 1";
$result=mysql_query($query);
$row = mysql_fetch_row($result);

if ($row[0] =='y'){
 ...