1

我对所有这一切都很陌生,试图弄清楚为什么事情有效,为什么事情不成功。

所以我的目标是创建一个简单的搜索表单来显示所有具有相同名字的数据库用户。

这段代码在我的表“users”中输出所有用户的名字,它可以工作。

<?php
include 'connect.php'; //working connection to the DB


$sql="SELECT name FROM users ORDER BY name ASC";

$sqlresult=mysqli_query($con,$sql);

$afct=mysqli_affected_rows($con);

while($user=mysqli_fetch_array($sqlresult,MYSQLI_ASSOC)){ 
    $num[]=$user['name'];
    $num++;
}

$i=1;

while($i < $afct)
{
    echo $i.': '.$num[$i];
    echo'<br>';
    $i++;

}
?>

所以现在我想添加一个存储用户输入的变量,以匹配用户的名字。

<?php
include 'connect.php';    //working connection to the DB

$input = 'Marcus';       // later will be $input = $_GET(['name']);

$sql="SELECT name FROM users WHERE name='".$input."'  ORDER BY name ASC"; 

//tried with "SELECT * FROM users WHERE name='".$input."'" ORDER BY name ASC";
//also

$sqlresult=mysqli_query($con,$sql);

$afct=mysqli_affected_rows($con);

while($user=mysqli_fetch_array($sqlresult,MYSQLI_ASSOC)){ 
    $num[]=$user['name'];
    $num++;
}

$i=1;

while($i < $afct)
{
    echo $i.': '.$num[$i];
    echo'<br>';
    $i++;

}
?>

它所做的只是输出一个空白而性感的页面。先感谢您。

//马库斯

4

2 回答 2

0

我认为第二次没有运行是因为$i=1尝试while($i <= $afct)

于 2013-10-12T22:21:03.440 回答
0

问题是您初始化$i为 1。PHP 中的数组索引从 0 开始,就像几乎所有其他编程语言一样。由于您的第二个查询仅返回 1 行,因此唯一的元素将是$num[0]. 所以你应该初始化$i为0。

或使用foreach

foreach ($num as $i => $name) {
    echo "$i: $name<br>";
}

您的第一个脚本也是错误的,您只是没有注意到它跳过了表中的一个用户。

于 2013-10-12T22:24:22.190 回答