【问题标题】:how to fetch all rows data from the database using while loop and stored fetch values in variables in php如何使用while循环从数据库中获取所有行数据并将获取值存储在php中的变量中
【发布时间】:2016-01-06 00:40:18
【问题描述】:

大家好,我在数据库中有表,我从中获取数据表的一列有用户输入 n 我根据用户输入获取数据,例如,如果用户在文本框中输入 2,则只会显示包含数字 2 的行 喜欢 根据房间数插入代码

   <?php
    $d=$_POST['roomno'];
    echo $d;
    ?>
      <?php
      //database connection
    $db = new PDO("mysql:host=localhost;dbname=ems",'root','');
    //query
    $sql = "INSERT INTO table1 (c,c1, c2, c3, c4,c5,c6,c7,c8,c9,c10,c11,c12,c13) VALUES ('',:c1, :c2, :c3, :c4,:c5, :c6, :c7, :c8, :c9,:c10, :c11, :c12,'$d')";
    $stmt = $db->prepare($sql);
    foreach ($data_t1 as $i => $value) {
        $stmt->execute(array(
           ':c1'=>$data_t1[$i],
           ':c2'=>$data_t2[$i],
           ':c3'=>$data_t3[$i],
           ':c4'=>$data_t4[$i],
           ':c5'=>$data_t11[$i],
           ':c6'=>$data_t22[$i],
           ':c7'=>$data_t33[$i],
           ':c8'=>$data_t44[$i],
           ':c9'=>$data_t111[$i],
           ':c10'=>$data_t222[$i],
           ':c11'=>$data_t333[$i],
           ':c12'=>$data_t444[$i],
        ));
    } ?>

获取数据的编码

 <?php
    include('config.php');
    $sa="select * from table1 where c13='$d'";
    $result=mysql_query($sa) or die(mysql_error());
    echo "<table border='1'>
    <tr>

    </tr>";

     <?php
    $i = 1;
    while($row = mysql_fetch_array($result)) {
       echo ${"r" . $i . "1"} = $row['c'];
      echo  ${"r" . $i . "2"} = $row['c1'] ;
       echo ${"r" . $i . "3"} = $row['c2'];
       echo ${"r" . $i . "4"} = $row['c3'];
       echo ${"r" . $i . "5"} = $row['c4'];
       $i++;
    }

结果

$d=3;mean user enter 3
3 room deatils enter in three rows of table like ths

row1  2   4  5   6    3(user enter value)
row2  12  14 15   16   3(user enter value)
row3  22  44  55  63   3(user enter value)

现在正如我在我的 fetch 查询中提到的那样,它获取 c13(room)=user input($d); 的数据;

以上三行显示的论文结果

现在我想将这三个行值中的每一个存储在不同的变量中

以类似的方式,如果用户输入 2 或 4,我想将两行或四行值存储在不同的变量中

【问题讨论】:

  • 考虑使用mysqli_ 函数而不是旧的mysql_,因为这些旧函数即将停用,如果主机升级平台,您的程序将停止运行。..
  • …或使用 PDO。反正还是切换到prepared statements,防止SQL注入比较好。

标签: php html


【解决方案1】:

当然它只会显示最后一行。在查询结果的每次迭代中,您都在重写 $r -nth 变量,因此您在循环后看到的结果只是在上次迭代期间分配的值。

使用

$row = array();
while($row[] = mysql_fetch_array($result)){
}

因此,您将在$row 中以数组形式存储所有数据。 它的作用如下: 遍历查询结果并获取它。 fetching 方法返回当前迭代行值的数组。该数组被推入$row 数组。因此,可以在$row 的相应索引处访问每一行值。 使用print_r( $row );查看结构。

数组的进一步使用如下:

echo $row[ 0 ][ 'c1' ];
echo $row[ 0 ][ 'c2' ];
echo $row[ 1 ][ 'c3' ];

如果您想根据动态行数显示输入,请使用:

$count = count( $row );
for( $i = 0 ; $i < $count; $i++ ){
    echo $row[ $i ][ 'c1' ];
}

【讨论】:

  • 先生,我不想使用数组,因为我希望这些值用于进一步计算
  • @user2421659 数组是一组值。还是我在您的问题中遗漏了什么?
  • 先生,您的习惯是数组是一组值,但我需要将每个值存储在某个变量中,而不是存储在整个数组中
  • 先生,如果 2 出现在 3 行中,那么它怎么可能呢?这里你提到数组的 $row[0] 索引
  • @user2421659 我已经编辑了答案。试试这个方法并使用print_r 查看结构。那你应该明白怎么处理了。
【解决方案2】:

简单地说:

$data = array() ; //Declare an array
while($row = mysql_fetch_array($result)){
  $data[] = $row ; //Add every row to array
}

echo $data['c4'] ; // Work with the array ETC

【讨论】:

  • 先生,我需要执行进一步的计算,我不能将值存储在变量 $r=$row 中吗?
【解决方案3】:

我建议你使用 Michael Sazonov 的方式.. 但如果你不想要数组,你可以去:

<?php
$i = 1;
while($row = mysql_fetch_array($result)) {
   ${"r" . $i . "1"} = $row['c'];
   ${"r" . $i . "2"} = $row['c1'] ;
   ${"r" . $i . "3"} = $row['c2'];
   ${"r" . $i . "4"} = $row['c3'];
   ${"r" . $i . "5"} = $row['c4'];
   $i++;
}

现在内容存储在 $r11 $r12 $r13.. $r35 中,您必须手动回显它们或使用 2 个 for 循环

<?php
for($i=1; $i<=3; $i++) {
   for($j=0; $j<=5; $j++) {
      echo ${'r'.$i.$j};
   }
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多