【问题标题】:How to fetch all the results from MySQL table?如何从 MySQL 表中获取所有结果?
【发布时间】:2014-12-16 07:08:35
【问题描述】:

我正在尝试从 phpadmin mysql 表中获取所有结果。问题是使用下面的代码与 php 和 angular JS,每次只获取第一行。假设表中有 5 个条目。所发生的只是第一个在网站上显示 5 次。当我执行 php echo(在代码中注释掉)时,它会返回表中的所有结果,但它不适用于 angular JS。

我也在使用 JS 模糊搜索库,由于空间问题我没有在这里提供。以下是其他代码:

</table>        
<?php

          $result = mysql_query("SELECT * FROM user_files ORDER BY id DESC");  
          while($row = mysql_fetch_array($result)){

          $id1 = $row['id'];
          $name = $row['user_file_name'];
          //echo $name.'<br/>';                     

?>

<div class="container" ng-init="books=[{book:'<?php echo $name;?>',author:'<?php echo $id1;?>'}]">
</div>                                


<tr ng-repeat="bookInfo in books | filter:bookText | orderBy:'book'">                                   


<td style="color: black;">{{ bookInfo.book }} - {{ bookInfo.author | lowercase}}</td>

<td style="color: black;" align="center">Size</td>
<td style="color: black;" align="center">Type</td>

<td style="color: black;" align="center" width=90%> 
<input type="button" name="read" value="Read"></td>

<td style="color: black;" align="center" width=90%>
<input type="button" name="write" value="Write"></td>

<td style="color: black;" align="center" width=90%>
<input type="button" name="download" value="Download"></td>

<td style="color: black;" align="center" width=90%>
<input type="button" name="share" value="Share"></td>

</tr>

【问题讨论】:

    标签: javascript php mysql angularjs


    【解决方案1】:

    是的,因为您将数组初始化为

    ng-init="books=[{book:'<?php echo $name;?>',author:'<?php echo $id1;?>'}]
    

    编译后显示类似

    ng-init="books=[{book:'bookName1',author:'authorId1'}]
    

    那么ng-repeat 就只有一本书了

    所以你要做的是,

    <?php
    
      $result = mysql_query("SELECT * FROM user_files ORDER BY id DESC");  
      $dataArr = array();         // to get the all the detail to a array
      while($row = mysql_fetch_array($result)){
          $id1 = $row['id'];
          $name = $row['user_file_name'];
          array_push($dataArr , array("book"=>$name , "author"=>$id1));
      }
     ?>
    
    ... ng-init="books=<?php echo json_encode($dataArr); ?>">
    

    【讨论】:

    • 我试过了,还是不行。相反,它不显示任何文件:(
    • 我保留了以下两行代码完整 {{ bookInfo.book }} - {{ bookInfo.author |小写}}
    • 你在&lt;tr ng-repeat="bookInfo in books | filter:b...的inspect元素上看到了什么
    • 我在表定义上做了一个检查元素,它显示了 sql 表中的所有文件,但它们没有在网络上显示。这是检查元素视图
    • 在检查元素ng-init="books= 之后你能看到什么?
    【解决方案2】:

    因为你的while循环只执行了1次,所以你必须改变while循环的逻辑。

    【讨论】:

      【解决方案3】:

      首先通过从表中获取所有数据并将其转换为json数组来创建一个数组。注意:还要定义 Angular js 控制器“appController”,

            <?php
              $books = array();
              $result = mysql_query("SELECT * FROM user_files ORDER BY id DESC");  
              $i = 0;
              while($row = mysql_fetch_array($result)){
      
                $books[$i]['id'] = $row['id'];
                $books[$i]['name'] = $row['user_file_name'];
                $books[$i]['bookText'] = $row['bookText'];
                $books[$i]['author'] = $row['author'];
                $i++;
              }
      
              $books = json_encode($books);
            ?>
      

      现在将此 json 数组分配给 angular books 数组

            <script>
              function appController($data) {
                $data.books = "<?php echo $books; ?>" ;
              }
            </script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-25
        • 2019-09-08
        • 1970-01-01
        • 2017-11-05
        • 2020-09-30
        • 2013-12-26
        • 1970-01-01
        • 2011-06-26
        相关资源
        最近更新 更多