0

私は codeignitor を初めて使用し、クエリの選択に大きな問題がありました。私はもともと私が初心者だと思っていましたが(そしておそらくそうかもしれません)、ガイドとビデオを3日間勉強したという事実は、それが問題だと思っています.

これを使用する場合:

if ( $q->num_rows > 0 )

私は継続的にエラーを受け取ります: 非オブジェクトのプロパティを取得しようとしています

ログイン認証システムを作成するためのガイドに従っています。インストラクターが持っているものを明確に入力していますが、そのエラーを渡すことができません。このガイドだけでなく、従った他のガイドでも、行データを取得しようとすると同じエラーが発生しました。

これが私のモデルです:

public function verify_user($email, $password)
{
$q = $this
        ->db
        ->where('email_address', $email)
        ->where('password', sha1($password))
        ->limit(1)
        ->get('users');

   if ( $q->num_rows > 0 ) {
        return $q->row();
       }
       return false;
}

これについて私が得ることができるどんな助けも大歓迎です!

4

3 に答える 3

3

変化する

$q->num_rows

$q->num_rows()

ここを参照してください: codeigniter ガイド

やってみてください:

echo $this->db->last_query(); //after $this->db ...... get('users');

生成されたSQLをチェックして、SQLステートメントにエラーがないか確認します

于 2013-06-10T03:47:51.000 に答える
1

はプロパティではなく関数 (メソッド) であるnum_rowsため、の後に括弧を使用する必要があります。num_rows

$q->num_rows()

また、クエリが結果を返さない場合は$q、オブジェクトではなく boolean になりFALSEます。

提案:

public function verify_user($email, $password)
{
    $user = $this
        ->db
        ->where('email_address', $email)
        ->where('password', sha1($password))
        ->limit(1)
        ->get('users')
        ->row();

    return (empty($user) ? false : $user);
}
于 2013-06-10T03:47:21.807 に答える