【问题标题】:PHP mysql display query in 4 columnsPHP mysql在4列中显示查询
【发布时间】:2015-12-08 05:59:18
【问题描述】:

如何在 4 列中显示此查询结果

<?php
$direction = $_POST['direction']; 
$sumword = $_POST['sumword'];  
$length = $_POST['length'];  
$con = mysql_connect("localhost","elsha","12q(5PSZ.");
$db = mysql_select_db("elsha",$con);
$query = "SELECT answer FROM words WHERE direction = '$direction' AND sumword = '$sumword' AND sumletter = '$length'";
$result = mysql_query($query);

if(mysql_error()) { 
  //check that no error has occurred first; take this out in production or make more graceful handling
  die(mysql_error());
}

if(mysql_num_rows($result) == 0) {
  echo "No Results";
} else { 
  while($row = mysql_fetch_array($result)) {
    echo '<img src="/images/'. $row['0'].'.jpg"><br> '. $row['0'].'<br>';
  }
}
?>

像这样:

结果1 结果2 结果3 结果4

结果5 结果6 结果7 结果8

【问题讨论】:

  • 因为没有人提到它不再使用 mysql 函数,它们已被弃用,并且在 PHP 7.0 中被删除,改用 mysqli 或 PDO。此外,在处理上述用户输入时,请使用准备好的语句,因为现在您的代码已为 SQL 注入打开

标签: php mysql sql


【解决方案1】:

试试这个

$i = 0;

while($row = mysql_fetch_array($result)) {
    echo '<img src="/images/'. $row['0'].'.jpg"> ';
    $i++;
    if($i % 4 == 1 && $i!=1){
        echo '<br>';
    }
}

【讨论】:

    【解决方案2】:

    像这样使用标志

    $flag=0;
    while($row = mysql_fetch_array($result)) {
         if(($flag%4)==0) {
           echo '<tr>';
         } 
         echo '<td><img src="/images/'. $row['0'].'.jpg"><br> '. $row['0'].'</td>';
        if(($flag%4)==3) {
          echo '</tr>';
          $flag=-1;
         } 
         $flag++;
    }
    

    【讨论】:

      【解决方案3】:

      将您的 while 替换为以下代码。试试这个

      $a=1;
      while($row = mysql_fetch_array($result)) {
          if($a%4==0) {
              echo '<img src="/images/'. $row['0'].'.jpg">'.    $row['0'].'<br>';
          } //4th line with break
          else {
              echo '<img src="/images/'. $row['0'].'.jpg"> '. $row['0'].' '; // prints first 3 lines 
          }
          $a=$a+1;
      }
      

      【讨论】:

        【解决方案4】:

        我认为您正试图在图像下方显示图像名称。试试这个:

        $i = 1;
        while($row = mysql_fetch_array($result)) {
               echo '<div class="imgs">';
               echo '<img src="/images/'. $row['0'].'.jpg"><br> '. $row['0'];
               echo '</div>';
               if ($i === 4) {
                   echo '<div class="clear"></div>';
                   $i = 1;
               } else {
                   $i++;
               }
         }
        

        然后设置 div 的样式

        .imgs {
          float: left;
          /* other styles */
        }
        .clear {
          clear: both;
        }
        

        【讨论】:

        • 几乎正确,但第一行有 5 列,其余 4 列
        • @BudiAndug 嗯,这出乎意料。您是否在 while 之前将 $i 分配为 1 ?
        猜你喜欢
        • 1970-01-01
        • 2011-10-06
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多