来自sql的Echo完整数组

时间:2016-10-31 21:16:30

标签: php

我试图从SQL中获取与特定单词匹配的数据,因此我为此编写了此代码

<?php 
        require ('config.php');
        $searchphrase = $_GET['seach'];
        $searcharry =  explode(" ", $searchphrase);
        $searcharrycount = count($searcharry);
        $i1 = 0;
        $i2 = 0;    
        //sql
        while ( $i1 < $searcharrycount) {
        $sql = "SELECT word, url FROM words WHERE word LIKE '%$searcharry[$i1]%'";
            $result = $conn->query($sql);
            if ($result->num_rows > 0) {
                while($row = $result->fetch_assoc()) {
                    $url = explode(" , ", $row["url"]);
                    $urlcount = count($url);
                    while ($i2<$urlcount) {
                        echo $url[$i2]."<br>";
                        $i2++;
                    }
                }   
            } 
            $i1++;

        }

        //end sql
        $conn->close();

         ?>

这就是我的SQL设计方式

SQL data structure

因此,当我运行此代码时,我希望得到像流动的结果 一个

三个
四个
五个

然而,当我运行代码时,我得到了流畅的结果:
一个

五个

所以我的问题是如何显示我期望的输出而不是显示SQL中的每一行?

2 个答案:

答案 0 :(得分:0)

df <- data.frame(temp = sample.int(n=3, size=5, replace=T)) df temp 1 3 2 3 3 1 4 3 5 1 duplicated(df$temp) [1] FALSE TRUE FALSE TRUE TRUE which(duplicated(df$temp)) [1] 2 4 5 循环的每次迭代中将$i2设置为零:

while

答案 1 :(得分:0)

您永远不会重置$i2,因此当您处理更多数据库结果行时,$i2会不断增长,并最终开始使用不存在的索引。例如。假设您的数据库中的行包含3个网址。

row1: url1,url2,url3
row2: url4,url5,url6
row3: url7,url8,url9
etc...

由于您从未重置$i2,因此您最终会这样做:

row1: url1,url2,url3
  i2    0   1     2

row2: url4,url5,url6
  i2:                 3   4   5

row3: url7,url8,url9
  i2:                             6   7   8

要么在$i2=0循环之前放置一个while(),所以你总是从索引0开始,或者只是在完全循环时摆脱它(毫无意义):

echo str_replace(' , ', '<br>', $row['url']);

由于您正在做的事情,实际上是将逗号更改为休息符,所以也可以同时更改所有逗号。