当数据库中不存在所选数据时,PHP未定义变量

时间:2014-03-27 06:24:43

标签: php mysql

好吧,我的代码在数据库中存在所选行时工作,它完美无缺。但问题是当我选择一个根本不存在的数据时。它给我一个错误,我的变量是未定义的。

这是脚本:

<?php 
    include('Nethost.php');
        $patient = $_POST['patientid'];
        $diagnosisid = $_POST['diagnosis'];
        $pname = $_POST['patientname'];
        $d = $_POST['diagnosis'];
        $query = mysql_query("select objective from soapie WHERE patientid='$patient' AND subjective='$diagnosisid' LIMIT 1");

       while($rows = mysql_fetch_assoc($query))
        {
            if($rows==NULL) 
            {
                        echo "No data";         
            }
            else
            {
                        $objective = $rows['objective'];        
            }                       
    }
    ?>

我正在显示输入类型文本..

<table style="margin-left:auto; margin-right:auto">
    <tr>
    <td>Objective</td>
    </tr>
    <tr>
    <td><input ID="txtobjective" name="objective" value="<?php echo "" .$objective. ""; ?>" type="text" /><br></td>
    </tr>
    </table>

我认为这是一个常见问题,我甚至无法解决。我刚从使用PHP的编码中恢复过来。有人可以建议我一个很好的做法来处理这类问题。提前谢谢。

3 个答案:

答案 0 :(得分:1)

在代码之前放置$ objective =''。您的变量尚未设置。

<?php 
    include('Nethost.php');
        $patient = $_POST['patientid'];
        $diagnosisid = $_POST['diagnosis'];
        $pname = $_POST['patientname'];
        $d = $_POST['diagnosis'];
        **$objective='';**
        $query = mysql_query("select objective from soapie WHERE patientid='$patient' AND subjective='$diagnosisid' LIMIT 1");

       while($rows = mysql_fetch_assoc($query))
        {
            if($rows==NULL) 
            {
                        echo "No data";         
            }
            else
            {
                        $objective = $rows['objective'];        
            }                       
    }
    ?>

答案 1 :(得分:1)

$ fname,$ midd,$ sname,$ objective 您需要初始化您使用的所有变量,这样如果没有值,您就不会得到未定义的错误。

最佳做法是在使用变量之前初始化变量:

  $objective = $fname = $sname = $midd = '';
  while( $rows = mysql_fetch_assoc ( $query ) ) {
    if( empty( $rows ) )  {
                echo "No data";
    }
    else {
        //check if the variable has value, otherwise set it to null
        $objective = isset( $rows['objective'] ) ? $rows['objective'] : '' ;
    }                    
  }

此外,在回显变量时,您不需要&#34; 引号:

 <td><input ID="txtobjective" name="objective" value="<?php echo $objective; ?>" type="text" /><br></td>

 <?php echo $objective; ?>

这对你没用。

答案 2 :(得分:0)

试试这个我希望这会对你有所帮助

while($rows = mysql_fetch_assoc($query))
    {
        if(empty($rows))  
        {
                    echo "No data";         
        }
        else
        {
                    $objective = $rows['objective'];        
        }                       
}