isset()没有按预期工作

时间:2013-06-24 17:02:07

标签: php mysql

我正在创建一个可以查询多个字段的搜索 - 搜索有助听器的男性用户。

表单中的html代码如下所示

<form name="O_search" method="post" action="search.php">
Gender (M/F)<input type="text" name="O_gender"/>
Hearing Aid (Y/N)<input type="text"  name="O_hear"/>


<input type="hidden" name="O_searching" value="yes" />

   

php代码看起来像这样

if (isset($_POST['O_searching'] )) 
{ 
    echo "<h2>Results</h2><p>"; 


    if (isset($_POST['O_gender']) || isset($_POST['O_hear']) == "") 
    { 
        echo "You forgot to enter a search term"; 
        exit; 
    } 
    $Gender =$_POST['O_gender']; 
    $Hear =$_POST['O_hear'];

    $Gender = strtoupper($Gender); 
    $Gender = strip_tags($Gender); 
    $Gender = trim ($Gender); 

    $Hear = strtoupper($Hear); 
    $Hear = strip_tags($Hear); 
    $Hear = trim ($Hear);

    $Odata = mysql_query("SELECT * FROM p_candidate WHERE(`gender` LIKE '%".$Gender."%') AND (`hear`  LIKE '%".$Hear."%')") or die(mysql_error());

    while($result = mysql_fetch_array($Odata)) 
    {
        $candidate_id =$result['candidate_id'];
        echo "<tr>";
        echo "<td><a href ='opening_candidatepage.php?id=$candidate_id'>".$result['R_first_name']."&nbsp;&nbsp;".$result['R_last_name']."</td>"; 
        echo "<td>".$result['R_county']."</td>"; 

     } 

     $anymatches=mysql_num_rows($Odata); 
     if ($anymatches == 0) 
     { 
         echo "Sorry, there is no match for your query<br><br>"; 
     } 

     echo "<b>Searched For:</b> " .$Gender."&nbsp;&nbsp;and".$Hear ; 
 }
 ?>

我不知道自己哪里出错了,但即使我在字段中输入有效的搜索字词,我也会收到消息 您忘记输入搜索字词

3 个答案:

答案 0 :(得分:4)

如果设置了值,则导致错误条件。您希望在未设置错误时触发错误。

if( !isset($_POST['O_gender']) || !isset($_POST['O_hear']))

答案 1 :(得分:1)

而不是这一行,

if (isset($_POST['O_gender']) || isset($_POST['O_hear']) == "") 

尝试这个

if (!isset($_POST['O_gender']) || !isset($_POST['O_hear'])) 

答案 2 :(得分:0)

即使是空白字符串,也始终在表单中设置文本字段。您应该使用isset进行最佳实践,但也可以使用strlen和trim来查看字符串是否包含任何内容。您还希望仅在没有字符串时显示错误消息。

if(!isset($_POST['O_hear']) || strlen(trim($_POST['O_hear'])) == 0)

如果需要,可以为这两个术语执行此操作。有点不清楚你想要做什么。