首页 > 解决方案 > Mysql和php代码跳过第一个结果

问题描述

我正在创建一个 web 应用程序来破坏数据库中包含的数据。我用 php 和 mysql 语言编写了代码。问题是当我的应用程序在表中显示查询请求的数据时,第一个结果被跳过,我无法理解为什么。此外,控制台中没有显示错误,这就是我无法解决问题的原因。

这是代码,其中有 db 连接、mysql 查询和表中输出的组织。

<html>
<body>

<div id="holder">
<h1><?php echo "<font face=verdana size=30 color=#036>SEQUENZA DI START</font>";?></h1>
</div>
<br>

<div class="container">
<?php
$conn= mysql_connect("db", "db", "ps");
if (!$conn)
{
     die("Connessione non riuscita <br>" . mysql_error());
//}else{
    //echo "Connessione al database stabilita con successo<br><br>";
}

mysql_select_db("var", $conn);

if(isset($_POST["vai"])){
   $start=$_POST["start"];
}
echo "Verranno visualizzate le varianti per la seguente sequenza di start: '<b>$start</b>'.";?>
<br><br>
      <div class="row">
            <div class="col-mid-8 col-mid-offset-2">
                 <table id="mytable" class="table table-striped table-bordered table-hover">
                      <thead>
                        <tr>
                          <th><b>Codice DNA</b></th>
                          <th><b>Chr</b></th>
                          <th><b>Start</b></th>
                          <th><b>End</b></th>
                          <th><b>Alt</b></th>
                          <th><b>Ref</b></th>
                          <th><b>Zygosity</b></th>
                          <th><b>Coverage</b></th>
                          <th><b>InsertPos</b></th>
                        </tr>
                      </thead>
                      <tbody>   
                         <?php
                             $sql="SELECT V.dnaCode, V.Chr, V.Start, V.End, V.Alt, V.Ref, V.zygosity, V.coverage, V.InsertPos FROM variante as V WHERE V.Start='" .$start. "'";
                             $result_start = mysql_query($sql, $conn) or die(mysql_error());
                             $record_start=mysql_fetch_array($result_start);
                             if($record_start==false)
                            {
                                  echo "<br>La ricerca non ha prodotto alcun risultato con la sequenza di start inserita!<br>";
                                  echo"<b>Effettuare una nuova ricerca.</b><br><br>";
                            }else
                            {

                         while ($record_start = mysql_fetch_array($result_start)) {
                             echo '
                                <tr>
                                  <td>'.$record_start["dnaCode"].'</td>
                                  <td>'.$record_start["Chr"].'</td>
                                  <td>'.$record_start["Start"].'</td>
                                  <td>'.$record_start["End"].'</td>
                                  <td>'.$record_start["Alt"].'</td>
                                  <td>'.$record_start["Ref"].'</td>
                                  <td>'.$record_start["zygosity"].'</td>
                                  <td>'.$record_start["coverage"].'</td>
                                  <td>'.$record_start["InsertPos"].'</td>
                                </tr>
                                ';

                             }
                         };
                       ?>

                    </tbody>
               </table>                       
            </div>
       </div>
  </div>


         <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous">         </script>
         <script type="text/javascript" src="js/ddtf.js"></script>
         <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>

         <script type="text/javascript" >
         $('#mytable').ddTableFilter();
         </script> 
</body>
</html>

标签: phpmysql

解决方案


大注

每次您在新代码中使用数据库mysql_ 扩展 时,都会发生这种情况 ,它已被弃用,并且已经存在多年,并且在 PHP7.0+ 中永远消失了。如果您只是学习 PHP,请花精力学习数据库扩展和准备好的语句 PDO从这里开始mysqli

删除此行$record_avsnp150 = mysql_fetch_array($result_avsnp150);,因为它正在从结果集中获取第一行,但您什么也没做。

$sql_avsnp150= "SELECT A.avsnp150, V.dnaCode, V.Chr, A.Start, A.End,
                       A.Alt, A.Ref, V.zygosity, A.gene, A.Func 
                FROM annotazioni as A 
                    JOIN variante as V ON A.Start = V.Start 
                        AND A.Alt=V.Alt 
                        AND A.Ref=V.Ref 
                WHERE A.avsnp150='".$avsnp150."'";
$result_avsnp150 = mysql_query($sql_avsnp150, $conn) or die(mysql_error());;

// remove this line
//$record_avsnp150 = mysql_fetch_array($result_avsnp150);

// and change this one too
//if($record_avsnp150==false)
if($result_avsnp150 == false ) {
    echo mysqli_error();
    exit;  // serious error so no point continuing
}

if ( mysql_num_rows($result_avsnp150) == 0)    {
    echo "<br>La ricerca non ha prodotto alcun risultato con l'avsnp150 inserito!<br>";
    echo"<font color=#039><b>Effettuare una nuova ricerca.</b></font><br><br>";
}else{
    while ($record_avsnp150 = mysql_fetch_array($result_avsnp150)) {       
       echo ' 
          <tr>
            <td>'.$record_avsnp150["avsnp150"].'</td>
            <td>'.$record_avsnp150["dnaCode"].'</td>
            <td>'.$record_avsnp150["Chr"].'</td>
            <td>'.$record_avsnp150["Start"].'</td>
            <td>'.$record_avsnp150["End"].'</td>
            <td>'.$record_avsnp150["Alt"].'</td>
            <td>'.$record_avsnp150["Ref"].'</td>
            <td>'.$record_avsnp150["zygosity"].'</td>
            <td>'.$record_avsnp150["gene"].'</td>
            <td>'.$record_avsnp150["Func"].'</td>
          </tr>
          ';

       }
}
?>

推荐阅读