【问题标题】:MYSQL in while array, print first result different from the othersMYSQL 在 while 数组中,打印与其他结果不同的第一个结果
【发布时间】:2013-09-24 01:47:24
【问题描述】:

我需要以下,这是我的功能:

function i_iframe( $cadena ) {
   $x = @mysql_query("SELECT * FROM videos WHERE id_peli = '$cadena' LIMIT 3");
   while ( $i = mysql_fetch_array( $x ) ) {
      $option = adios( $i['idioma'] );
      echo "<li>".$option."</li>";
   }
   @mysql_free_result( $x );
}

这段代码输出:

<li>option name 1</li>
<li>option name 2</li>
<li>option name 3</li>

我需要的输出应该是这样的:

<li class="selected">option name 1</li> 
<li>option name 2</li>
<li>option name 3</li>

你循环的第一个结果应该打印&lt;li class="selected"&gt;,其余的应该是&lt;li&gt;

【问题讨论】:

标签: php


【解决方案1】:
function i_iframe($cadena) {
$x=@mysql_query("SELECT * FROM videos WHERE id_peli = '$cadena' LIMIT 3");
bool $first = true;
while($i=mysql_fetch_array($x)) {
    $option = adios($i['idioma']);
    if($first)
    {
        echo "<li class=\"selected\">".$option."</li>";
        $first = false;
    } else {
        echo "<li>".$option."</li>";
    }
}
@mysql_free_result($x); 
}

应该做的伎俩

【讨论】:

    【解决方案2】:

    为您的第一个元素调用一次mysql_fetch_array

    function i_iframe($cadena){
    $x=@mysql_query("SELECT * FROM videos WHERE id_peli = '$cadena' LIMIT 3");
    if($i=mysql_fetch_array($x)){
    $option = adios($i['idioma']);
    echo '<li class="selected">', $option, '</li>';
    while($i=mysql_fetch_array($x)){
    $option = adios($i['idioma']);
    echo "<li>".$option."</li>";
    }
    }
    @mysql_free_result($x);
    }
    

    现在格式化您的代码:

    function i_iframe($cadena) {
        $x = @mysql_query("SELECT * FROM videos WHERE id_peli = '$cadena' LIMIT 3");
    
        if($i = mysql_fetch_array($x)) {
            $option = adios($i['idioma']);
            echo '<li class="selected">', $option, '</li>';
    
            while($i = mysql_fetch_array($x)) {
                $option = adios($i['idioma']);
                echo '<li>', $option, '</li>';
            }
        }
    
        @mysql_free_result($x);
    }
    

    停止忽略错误并使用更清晰的名称:

    function i_iframe($cadena) {
        $query = mysql_query("SELECT * FROM videos WHERE id_peli = '$cadena' LIMIT 3");
    
        if($item = mysql_fetch_array($query)) {
            $option = adios($item['idioma']);
            echo '<li class="selected">', $option, '</li>';
    
            while($item = mysql_fetch_array($query)) {
                $option = adios($item['idioma']);
                echo '<li>', $option, '</li>';
            }
        }
    
        mysql_free_result($x);
    }
    

    在使用它们的地方转义你的输入,特别是如果你还没有:

    function i_iframe($cadena) {
        $cadena = mysql_real_escape_string($cadena);
        $query = mysql_query("SELECT * FROM videos WHERE id_peli = '$cadena' LIMIT 3");
    
        if($item = mysql_fetch_array($query)) {
            $option = adios($item['idioma']);
            echo '<li class="selected">', $option, '</li>';
    
            while($item = mysql_fetch_array($query)) {
                $option = adios($item['idioma']);
                echo '<li>', $option, '</li>';
            }
        }
    
        mysql_free_result($x);
    }
    

    现在停止使用已弃用的扩展程序并享受 PDO 的生活:

    function i_iframe($cadena) {
        global $db;
    
        $query = $db->prepare('SELECT idioma FROM videos WHERE id_peli = :cadena LIMIT 3');
        $query->execute([':cadena' => $cadena]);
        $videos = $query->fetchAll(PDO::FETCH_OBJ);
    
        $first = array_shift($videos);
        echo '<li class="selected">', htmlspecialchars(adios($first->idioma)), '</li>';
    
        foreach($videos as $video) {
            echo '<li>', htmlspecialchars(adios($first->idioma)), '</li>';
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 2016-04-14
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多