2017-08-04 12 views
1

Help。私は0 num_rowsを得ていますが、私は結果を得ているコンソールでクエリを実行する場合。私はstmtsを準備するためにちょっと新しい。Mysqli Prepared Stmtは0を返します。num_rows

class DbConnection { 
const HOST = "localhost"; 
const USR = "root"; 
const PWD = ""; 
const DB = "club_db"; 
} 

ログインクラス:ここに私のコードは

データベース接続クラスである私の意見では、ここで与えられた二つの答えが正しいものではありませんが

class UsrLogin extends DbConnection { 

private $conn; /*db connector*/ 

/*login vars*/ 
private $usr; 
private $pwd; 

/*ctrl var*/ 
public $AccessGranted = false; 

function __construct($username,$password){ 
    /*initialize db connection*/ 
    $this->conn = new mysqli(DbConnection::HOST,DbConnection::USR,DbConnection::PWD,DbConnection::DB); 
    /*set login vars*/ 
    $this->usr = $username; 
    $this->pwd = $password; 

} 

public function login(){ 
    $sql = "SELECT * FROM sys_usr WHERE uid = ? AND passwd = ?"; 
    $stmt = $this->conn->prepare($sql); 
    $stmt->bind_param("ss", $usr,$pwd); 

    $usr = $this->usr; 
    $pwd = $this->pwd; 

    $stmt->execute(); 

    echo $stmt->num_rows; 
} 
} 

答えて

2

、私は、問題がどこにあるか私が知っていると思います。

まず、変数をバインドする前に変数に値を割り当てる必要はありません。それはまったく真実ではありません。それは私がかなり怒っている、なぜなら私はスタックオーバーフローでこれを何度も読んでいるから...そしてその間違い。単に。違う。そうであれば、異なる値を持つ複数のprepared statementを実行することはできません。たとえ古くて多くの人々がここでそれを見たくないとしても、W3: https://www.w3schools.com/php/php_mysql_prepared_statements.aspからのolinkは、あなたがしようとしていることが完全に可能であることを示しています。

だから、今、あなたの問題へ:何をやっている

は完全に罰金です。しかし、欠けているものがもう一つあります。エラーの原因は何ですか。不足しているstore_result()機能

は、このコードにチャンスを与え、それが動作するかどうかを教えてください:

public function login(){ 
    $sql = "SELECT * FROM sys_usr WHERE uid = ? AND passwd = ?"; 
    $stmt = $this->conn->prepare($sql); 
    $stmt->bind_param("ss", $usr,$pwd); 

    $usr = $this->usr; 
    $pwd = $this->pwd; 

    $stmt->execute(); 
    $stmt->store_result(); // Quite sure you need this to perform a num_rows... 
    echo $stmt->num_rows; 
} 
+1

だけで魔法のように。あなたは最高の仲間です。どうもありがとう。 – kingraphaII

+0

@kingraphaIIあなたを助けてくれてうれしいです:) – Twinfriends

+0

@kingraphaII Twinfriendsの回答を「受け入れられた」とマークするといいでしょう。そうすれば、他のユーザーもこの正しい解決策から利益を得ることができます。 –

関連する問題