2016-09-20 164 views
0

我显示从上表users结果:遍历所有查询结果行

<div class='box-for-info'> 
      <span>Name:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['name']==NULL){echo $row['name'];}else{echo '-';}?> 
      </span> 
      <input type='text' class='data-inputs' maxlength="30" name='name' value='<?php echo $row['name'];?>'/> 
      </div> 
     </div> 
     <div class='box-for-info'> 
      <span>Gender:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['gender']==NULL){echo $row['gender'];}else{echo '-';}?> 
      </span> 
      <input type='text' class='data-inputs' maxlength="30" name='gender' value='<?php echo $row['gender'];?>'/> 
      </div> 
     </div> 
     <div class='box-for-info'> 
      <span>Age:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['age']==NULL){ echo $row['age'];}else{echo '-';}?> 
      </span> 
      <input type='number' class='data-inputs' maxlength="30" name='age' value='<?php if(isset($age)){echo $age;}?>'/> 
      </div> 
     </div> 
     <div class='box-for-info'> 
      <span>Country:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['country']==NULL){ echo $row['country'];}else{echo '-';}?> 
      </span> 
      <input type='text' class='data-inputs' maxlength="30" name='country' value='<?php echo $row['country'];?>'/> 
      </div> 
     </div> 
     <div class='box-for-info'> 
      <span>City/Town:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['city']==NULL){echo $row['city']; }else{echo '-';}?> 
      </span> 
      <input type='text' class='data-inputs' maxlength="30" name='city' value='<?php echo $row['city'];?>'/> 
      </div> 
     </div> 
     <div class='box-for-info'> 
      <span>Native languages:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['native_lang']==NULL){echo $row['native_lang'];}else{echo '-';}?> 
      </span> 
      <input type='text' class='data-inputs' maxlength="30" name='native_lang' value='<?php echo $row['native_lang'];?>'/> 
      </div> 
     </div> 
     <div class='box-for-info'> 
      <span>Learned languages:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['learned_lang']==NULL){echo $row['learned_lang'];}else{echo '-';}?> 
      </span> 
      <input type='text' class='data-inputs' maxlength="30" name='learned_lang' value='<?php echo $row['learned_lang'];?>'/> 
      </div> 
     </div> 
     <div class='box-for-info'> 
      <span>Learning leanguages:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['learning_lang']==NULL){echo $row['learning_lang'];}else{echo '-';}?> 
      </span> 
      <input type='text' class='data-inputs' maxlength="30" name='learning_lang' value='<?php echo $row['learning_lang'];?>'/> 
      </div> 
     </div> 
      <div class='box-for-info'> 
      <span>Most favourite language:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['most_fav_lang']==NULL){echo $row['most_fav_lang'];}else{echo '-';}?> 
      </span> 
      <input type='text' class='data-inputs' maxlength="30" name='most_fav_lang' value='<?php echo $row['most_fav_lang'];?>'/> 
      </div> 
     </div> 
     <div class='box-for-info'> 
      <span>Best method to learn a language:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['best_method_to_learn']==NULL){ echo $row['best_method_to_learn'];}else{echo '-';}?> 
      </span> 
      <textarea class='textar' maxlength="2000" name='best_method_to_learn'><?php echo $row['best_method_to_learn'];?></textarea> 
      </div> 
     </div> 
     <div class='box-for-info'> 
      <span>Why do you learn languages:</span> 
      <div class='box-data-content'> 
       <span class='text-al-center'> 
       <?php if(!$row['why_do_you_learn'] == NULL){ echo $row['why_do_you_learn'];}else{echo '-';}?> 
      </span> 
      <textarea class='textar' maxlength="2000" name='why_do_you_learn'><?php echo $row['why_do_you_learn'];?> 
      </textarea> 
      </div> 
     </div> 
      <div class='box-for-info'> 
      <span>Your most favourite way to practice a language:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['your_most_fav_way'] == NULL){echo $row['your_most_fav_way'];}else{echo '-';}?> 
      </span> 
      <textarea class='textar' maxlength="2000" name='your_most_fav_way'><?php echo $row['your_most_fav_way']; ?> 
      </textarea> 
      </div> 
     </div> 
      <div class='box-for-info'> 
      <span>If the world would speak one language, it would be:</span> 
      <div class='box-data-content'> 
      <span class='text-al-center'> 
       <?php if(!$row['one_lang_in_the_world']==NULL){ echo $row['one_lang_in_the_world'];}else{echo '-';}?> 
      </span> 
      <textarea class='textar' maxlength="2000" name='one_lang_in_the_world'><?php echo $row['one_lang_in_the_world']; ?> 
      </textarea> 
      </div> 
     </div> 

正如你所看到的 - 代码正在重演,但该行的变化。我以为我可以拯救整个大量的代码和内存,如果我会用一个循环,会是这样的:

$row = mysqli_num_rows($result); 
while($rows){?> 
<div class='box-for-info'> 
    <span>Name:</span> 
    <div class='box-data-content'> 
     <span class='text-al-center'> 
     <?php if(!$row[$rows]==NULL){echo $row['name'];}else{echo '-';}?> 
     </span> 
     <input type='text' class='data-inputs' maxlength="30" name='name' value='<?php echo $row[$rows];?>'/> 
     </div> 
    </div> 

的问题是,我真的不知道如何识别行,所以我可以遍历它们在这里:

$row[$rows] 

,并在这里:

name='gender' 

我需要每一个循环像更改行的名称:$row['name']$row['gender']

如何将我的代码转移到一个漂亮的小循环中?任何帮助?

+0

也许我解释了问题不完整 - 但我不需要循环行!行结果可以是一个!只有一个$ row ['name'],$ row ['age']等等。Theres不需要遍历所有$ row ['age'],因为只有一个!相反,我需要通过sme列的不同列循环!因此每次写入都是这样的:$ row ['age'],$ row ['country']我想做一些类似于:$ row [$ i]的东西,所以我需要排列数组中相同行的列,只是陈列指数;我怎么做? – Donatta

+0

为什么不使用** foreach($ row作为$ key => $ value){var_dump($ value);} ** –

回答

0

mysqli_num_rows()仅返回结果集中的行数,它不返回数据。

使用mysqli_fetch_row在while循环遍历所有行

while($row = mysqli_fetch_row($result)){ 

,你不需要任何$行变量。使用

var_dump($row) 

看到返回的数据

要循环的结构在所有列在一排用

foreach($row as $key => $value) { var_dump($value);} 
0

比较典型的做法是这样的:

while($row = mysqli_fetch_assoc($result)){ ?> 
    ...stuff with $row["columnname"]... 
<?php } 

您基本上会为每行数据获得一个新的关联数组$ row,并且在数据用完时它会自动终止。除非需要创建计数器,否则无需引用索引变量。

或者,也许你可以试试:

while($row = mysqli_fetch_assoc($result)) { 
    foreach($row as $colname=>$coldata) { 
     echo "<p>"; 
     echo htmlentities($colname); 
     echo " is "; 
     echo htmlentities($coldata); 
     echo "</p>"; 
    } 
} 

...这将通过列名通过迭代列的你。显然在你的真实输出中使用$ colname和$ coldata - 这只是说明。注意使用htmlentities(),它确保一个任意小于号的符号不会弄乱你的html(并有助于防止XSS问题)。

+0

$ row [“columnname”]?但是如果它随着每个循环而变化,我应该如何引用一行? – Donatta

+0

在循环的顶部,您将逐字地获取整行数据到$ row中,因此您可以执行if(!$ row ['one_lang_in_the_world'] == NULL)之类的操作,并且只要您使用查询结果中指定的列。不要反套 - 给它一个镜头。 –

+0

呃。等待。你的模式是什么样的?每个盒子是否在一行而不是一列? –

1
This will helpful only replace the array to db array 

    <?php 
$arr=array('test1','test2','test3'); 
$row = count($arr); 
foreach($arr as $key=>$value){?> 
<div class='box-for-info'> 
    <span>Name:</span> 
     <div class='box-data-content'> 
      <span class='text-al-center'> 
      <?php if(!$key==NULL){echo $value;}else{echo '-';}?> 
      </span> 
      <input type='text' class='data-inputs' maxlength="30" name='name' value='<?php echo $value;?>'/> 
      </div> 
     </div> 
    <?php } ?> 
+0

它工作,但我不能{echo $ value;}这部分回显一行的值! – Donatta

+0

所以在yur代码的情况下,我需要以某种方式(哦,上帝)连接两个数组(第一个:查询 - 数组本身和第二个= $ arr数组)在获取一行的值... – Donatta

+0

使用msql_fetch_array( )它将返回键值对中的关联数组。 –