2017-12-17 23 views
0

データベースを検索して、ユーザーエントリと一致するかどうかを確認しようとしています。しかし、これまでのコードでは、データベースにある生徒の名前と番号を入力すると、「生徒は存在しません」という状態が続いています。存在しない名前と番号を入力すると、何も表示されません。私はPHPとmysqlの新人です。誰かが私を助けて、私のコードがうまくいかない理由を説明できれば、本当に感謝しています。私のフォームは別のページにあります。ここでは、私が正しい$ _POSTを引っ張っていることを示すために、ユーザーが自分の名前を入力するよう求めているところです。私は、コードが動作していることを確認するために名前と番号をエコーし​​てテストしています...今は現時点ではこれが現在です。データベースを検索してユーザー入力に一致する問題

<form action="next.php" method="post"> 


       Name: <input type="text" name="name" placeholder="Name" required="required" maxlength="50"> 
       <br><br> 

       Student Number: <input type="text" name= "snumber" required="required" maxlength="9"> 
       <br><br> 

next.php

<?php 

require 'connect.php'; 

//linking up to the database 
$link = mysqli_connect(HOST, USER, PASS, DB) or die (mysqli_connect_error()); 

//making a variable from the user data 
$name = mysqli_real_escape_string ($link, $_POST["name"]); 
$number = mysqli_real_escape_string ($link, $_POST["snumber"]); 
$course = $_POST["pcourse"]; 

// select all from table student which show student name and number 

$squery = "SELECT * FROM students WHERE uid='$number' AND student = '$name'"; 
$sresult = mysqli_query($link, $squery); 

// check is name and number entered by user equals what is in database 
$sfound =0; 
while ($srow = mysqli_fetch_array($sresult)) { 

    if ($name == $srow['uid'] && $number == $srow['student']) { 

    echo "$srow[uid] $srow[student]"; 

    } else{ 
    echo "Student doesn't exist"; 

    $sfound =1; 
    } // end of if ($name == $srow['uid'] && $number == $srow['student']) 
} // end of while ($srow = mysqli_fetch_array($sresult)) 

mysqli_close ($link); 
?> 

<html> 
<body> 
<form action="index.php" method="post"> 
    <br> 
    <input type = "submit" value="back" name="back"> 
</form> 
</body> 
</html> 
+0

比較がループ内の後方にあるようですか? .... '$ name'と' uid'を比較し、 '$ number'を' student'に比較しますか? –

答えて

0

例が閉じ</form>タグが欠落していますが、あなたのHTMLは、[OK]を思わ。

今やPHP。私はいくつかのエラーを修正しました。ここでは、コードは次のとおりです。

PHP

<?php 
require 'connect.php'; 

//linking up to the database 
$link = mysqli_connect(HOST, USER, PASS, DB) or die (mysqli_connect_error()); 

//making a variable from the user data 
$name = mysqli_real_escape_string ($link, $_POST["name"]); 
$number = mysqli_real_escape_string ($link, $_POST["snumber"]); 
$course = $_POST["pcourse"]; 

// select all from table student which show student name and number 

$squery = "SELECT * FROM students WHERE uid=".$number." AND student = '".$name."'"; 
$sresult = mysqli_query($link, $squery); 

// check if name and number entered by user equals what is in database 
$sfound =0; 
while ($srow = mysqli_fetch_assoc($sresult)) 
{ 
    if ($name == $srow['student'] && $number == $srow['uid']) echo $srow['uid'].' '.$srow[student]; 
    else 
    { 
     echo "Student doesn't exist"; 
     $sfound =1; 
    } // end of if ($name == $srow['student'] && $number == $srow['uid']) 
} // end of while ($srow = mysqli_fetch_array($sresult)) 

mysqli_close ($link); 
?> 
+1

mysqli_fetch_arrayのデフォルトは[MYSQLI_BOTH](http://php.net/manual/en/mysqli-result.fetch-array.php)なので、結果は行インデックスおよび/または列名で使用できます。 –

+0

あなたは正しいです。私はその行を消去する必要があります。ありがとう、助けを求めてupvoting。 – Ivan86

+0

はい、先ほど「同じフィールド名」について述べた内容が真であり、そのリンクで参照されていますが、一部はその点を見落とす可能性があります。 –

0

あなたは、彼らはおそらくnullのmysqli_real_escape_stringから生成された結果をチェックアウトする必要があります。これはおそらく、データベースクエリが0行を取得する理由です。あなたの接続$linkも空であれば、これが最初の理由です。

関連する問題