2016-07-18 12 views
0

は、mysqlのクエリで複数のPHPの変数を受け付けません、問題がクエリである私が変更された場合にのみ限り、このようなPHP - 私のSQLクエリは、以下の

Select * From student where Account = ".$username." 

として一つだけphp変数があるとして動作しますが、次のようなコードでエラーが発生しました

警告:mysqli_num_rows()は、パラメータ1がmysqli_resultであることを前提としています。

ここで問題が発生する可能性があります。どうかお手伝いください。

$result = $con->query("SELECT * FROM '.$role.' WHERE Account = '.$username.' AND password = '.$password.' AND IsApproved = '.$approval.'"); 

    if(mysqli_num_rows($result) == 1) { 
     $_SESSION['username'] = $username; 
     header('Location: include/test.php'); 
    } 
    else { 
     echo "Account is invalid"; 
    } 
    } 

EDIT:問題解決しよう - Dhavalデイブによって回答

$result = $con->query("SELECT * FROM {$role} WHERE Account = '{$username}' AND password = '{$password}' AND IsApproved = '{$approval}'"); 

おかげでたくさん私にすべての提案を支援するためのすべての人に、私は君たちが私に何をしたか感謝しています。おかげでたくさんX1000は

+0

、これを試してみてください。$ username.'' – Ghost

+0

行うので、どのように私はそれを教えてくれますか?私はPHPの初心者です、これは私の最終的なプロジェクトです。 – user5397881

+0

テーブルスキーマも共有できますか? 5つ以下の答えがあなたのために働かなかったら。 – C2486

答えて

-1
$result = $con->query("SELECT * FROM ".$role." WHERE Account = ".$username." AND password = ".$password." AND IsApproved = ".$approval."); 
+0

助けてくれてありがとう、でも同じエラーです。 – user5397881

+0

あなたはこれが何かを修正すると思うなら、勉強するのが大変です。 – tadman

-1

あなたは、SQL状態の文字列を渡している単一引用符を渡す必要が

<?php 
$result = $con->query('SELECT * FROM "'.$role.'" WHERE Account = "'.$username.'" AND password = "'.$password.'" AND IsApproved = "'.$approval'"'); 
+0

助けてくれてありがとう、でも同じエラーです。 – user5397881

+0

これはテーブル名の間違った引用符です。プレースホルダ値を持つプリペアドステートメントのための仕事であるため、一般的に間違っています。 – tadman

-1

てみてください。

$result = $con->query("Select * From student where Account = '".$username."' AND password = '".$password."' "); 
+0

いいえ、引用符を追加するだけで問題が悪化します。 – tadman

-1

あなたが直接最初の場所でのステートメント内の変数を注入することになっていない、「`ちょうど連結問題のthats

$role = trim($role); 
$result = $con->query("SELECT * FROM {$role} WHERE Account = '{$username}' AND password = '{$password}' AND IsApproved = '{$approval}'"); 
+0

ありがとうございました!!!これは私のために働いた..ありがとうx100000 ... – user5397881

+0

あなたは歓迎:)。 – Dave

+2

これはちょうど別の影です**これはしません**。このような変数を補間することは、どのような巨大な間違いが起こるかです。 [prepared statements](http://php.net/manual/en/pdo.prepared-statements.php)にプレースホルダ値を使用し、ユーザデータを別々の引数として指定します。 – tadman

関連する問題