繁体   English   中英

使用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而没有运行,尝试使用while($i <= $afct)

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

或使用foreach

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM