使用PHP和MYSQLI搜索数据库以查找匹配结果


Search database for matching results, using PHP and MYSQLI

我对这一切有点陌生,试图弄清楚为什么事情有效,为什么事情不起作用。

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

此代码输出我的表"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++;
}
?>

而它所输出的只是空白而性感的页面。提前谢谢你。

//马库斯

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

或使用foreach

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

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

我认为第二个虽然没有运行,因为$i=1尝试使用while($i <= $afct)