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

問題は、$i1 に初期化することです。PHP の配列インデックスは、他のほとんどすべてのプログラミング言語と同様に 0 から始まります。2 番目のクエリは 1 行しか返さないため、唯一の要素は になります$num[0]。したがって$i、0 に初期化する必要があります。

または使用foreach

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

最初のスクリプトも間違っていました。テーブル内のユーザーの 1 人をスキップしたことに気付かなかっただけです。

于 2013-10-12T22:24:22.190 に答える
0

$i=1試したために2番目のwhileが実行されなかったと思いますwhile($i <= $afct)

于 2013-10-12T22:21:03.440 に答える