如果语句在 while 循环中没有给出准确的结果.PHP MYSQL 查询


If statement inside while loop not giving accurate result. PHP MYSQL Query

我有一个简单的查询,它正在查询两个字段。第一个字段是日期,第二个字段是与该日期相关的代码。我试图开发一个 IF 语句,该语句查看代码并确定其 DOT 还是 NO DOT。我遇到的问题是代码跳过了 IF 语句,即使它是真的。我知道事实上"PO"是该特定代码的名称。任何建议都会很棒。这是代码:

if ($row_count1 < 9 and $row_count2 < 12 ){
  $pdf->SetFont('Arial',b,14);
  $pdf->SetXY(66,165);
  $pdf->Cell(70,5,"Drug / Alcohol Information ",0);
  $pdf->SetFont('Arial',B,8);
  $pdf->SetXY(49,172);
  $sql6 = ("SELECT ua_detail,da_code
            FROM ua_detail WHERE ua_detail.driver_code = '$searchTerm'" );
  $result=mysql_query($sql6)or die ('query did not run');
  $row_count = mysql_num_rows( $result );
  while( $row = mysql_fetch_array( $result))
  { 
    if ($row[0] > 0 ){      
      $ddate =  substr($row['ua_detail'],0,2).$slash.substr($row['ua_detail'],2,2).$slash.substr($row['ua_detail'],4,4);
      $code =  $row ['da_code'];    
      if ( $code == 'PO'){
        $DOT = "DOT Positive";
      } 
      else if ( $code != 'PO') {
        $DOT = "Non DOT Positive";
      } 
      $pdf->Cell(70,3,"Date Of Failure:"."  ".$ddate.   "        Test Code : "  . $code.    "      DOT / NON DOT: "     .$DOT,0);
    }
    else{
      $pdf->SetFont('Arial',B,10);
      $pdf->SetXY(68,172);
      $pdf->Cell(70,5,"No Failed or refused UA on record",0);
    }
  }
}

如果这个代码块

$code =  $row ['da_code'];    
if ( $code == 'PO'){
  $DOT = "DOT Positive";
} 
else if ( $code != 'PO') {
  $DOT = "Non DOT Positive";
} 

总是导致"非点正",则$code不等于"PO"。 您需要查看$code的价值才能确定。请记住,PHP 区分大小写,这意味着"po"与"PO"不同。 此外,请检查空格。 检查空格的一种方法是用这样的引号回显$code

 echo '"' . $code . '"';

如果您没有看到空格,请通过查看源代码来确保没有换行符。如果您在另一行上看到结束引号,那么您就会知道$code中有换行符。

此外,您的else if语句是多余的。你可以把它写成其他

$code =  $row ['da_code'];    
if ( $code == 'PO'){
  $DOT = "DOT Positive";
} 
else{
  $DOT = "Non DOT Positive";
}

最后,不要使用 mysql_* 函数。它们已弃用。你应该使用PDO或mysqli。