【问题标题】:parse error in php for the statement syntax, missing something在 php 中为语句语法解析错误,遗漏了一些东西
【发布时间】:2015-02-16 23:14:40
【问题描述】:

我试图在从数据库的另一个表中检索的下拉列表中回显该字段的值,但我不断收到 Parse 错误:语法错误,意外 T_IF

我知道我在逗号的括号中遗漏了一些东西,但我似乎看不到它,

 <?php
      $result1 = mysql_query("SELECT `CompanyID`, `Name` FROM `company`") or trigger_error(mysql_error());

      while($row1 = mysql_fetch_array($result1)) { 
           foreach($row1 AS $key1 => $value1) {
                $row1[$key1] = stripslashes($value1);
           } 

           echo "<option value=" . nl2br( $row1['CompanyID']) . " ". if($row['CompanyID'] == $Merchant) echo 'selected = "selected"'
        . ">" . nl2br( $row1['Name']) . "</option>";
        } 
 ?>

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你可以这样做:

    echo 'something ' . ( true ? 'statement is true' : 'statement is false') . ' continue echo';
    

    【讨论】:

      【解决方案2】:

      您不能像在代码中那样使用if(在字符串中)。它什么也不返回。使用这个:

      $sValue = boolean_value ? 'value if TRUE' : 'value if FALSE';
      

      它被称为“三元运算符”。 PHP 文档链接:

      http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

      改成这样,例如:

       <?php
            $result1 = mysql_query("SELECT `CompanyID`, `Name` FROM `company`") or trigger_error(mysql_error());
      
            while($row1 = mysql_fetch_array($result1)) { 
                 foreach($row1 AS $key1 => $value1) {
                      $row1[$key1] = stripslashes($value1);
                 } 
      
                 $sSel = ($row['CompanyID'] == $Merchant) ? 'selected = "selected"' : '';
      
                 echo "<option value=" . nl2br( $row1['CompanyID']) . " ".sSel.">" . nl2br( $row1['Name']) . "</option>";
              } 
       ?>
      

      如果你愿意,你也可以使用if,但以其他方式:

      if($row['CompanyID'] == $Merchant) {
          $sSel = 'selected = "selected"';
      } else {
          $sSel = '';
      }
      

      但我肯定更喜欢我向您介绍的第一种解决方案。

      【讨论】:

        【解决方案3】:

        所有的错误都被删除了。

        更正的代码:

        <?php
        $result1 = mysql_query("SELECT `CompanyID`, `Name` FROM `company`") or trigger_error(mysql_error());
        
        while ($row1 = mysql_fetch_array($result1)) {
            foreach ($row1 as $key1 => $value1) {
                $CompanyID = stripslashes($value1);
                $CompanyID = nl2br($CompanyID);
                $selected  = ($CompanyID == $Merchant) ? 'selected = "selected"' : '';
        
                echo '<option value="' . nl2br( $CompanyID) . '"' . $selected . '></option>';
            }
        }
        ?>
        

        【讨论】:

        • 在下拉列表中返回相同的结果 5 次
        • plus 不返回名称导致其丢失,加上它选择了错误的名称
        【解决方案4】:

        您的If 错误。使用这个:

           echo "<option value=" . nl2br( $row1['CompanyID']) . " ";
           if($row['CompanyID'] == $Merchant){ echo 'selected = "selected"'};
           echo ">" . nl2br( $row1['Name']) . "</option>";
        

        【讨论】:

        • 解析错误:语法错误,意外'}',期待','或';'
        • 谢谢,但它仍然给出解析错误:语法错误,意外'}',期待','或';'
        • @karmacat 在哪一行?
        猜你喜欢
        • 1970-01-01
        • 2019-03-12
        • 2013-07-12
        • 1970-01-01
        • 2011-05-14
        • 2019-05-17
        • 1970-01-01
        • 2021-04-25
        • 1970-01-01
        相关资源
        最近更新 更多