我试图从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中的每一行?
答案 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']);
由于您正在做的事情,实际上是将逗号更改为休息符,所以也可以同时更改所有逗号。