2015-06-23 18 views
6

Tôi không chắc chắn điều gì xảy ra ở đây. Tôi chỉ đang theo dõi một hướng dẫn trực tuyến và những lỗi này xuất hiện.Lỗi nghiêm trọng: Gọi tới truy vấn chức năng thành viên() trên số

tôi nhận được các lỗi sau đây

Lỗi

Notice: Undefined variable: db in C:\xampp\htdocs\wisconsindairyfarmers\admin\login.php on line 7 

Fatal error: Call to a member function query() on null in C:\xampp\htdocs\wisconsindairyfarmers\admin\login.php on line 7 

<?php 
$db = new mysqli('127.0.0.1', 'root', '', 'wisconsindairyfarmers'); 
?> 

<?php 
require '../db/connect.php'; 
require '../functions/general.php'; 

    function user_exists($username){ 
     //$username = sanitize($username); 
     $result = $db->query("SELECT COUNT(UserId) FROM users WHERE UserName = '$username'"); 
     if($result->num_rows){ 
     return (mysqli_result($query, 0) == 1) ? true : false; 
    }} 

if(empty($_POST) === false){ 

    $username = $_POST['username']; 
    $password = $_POST['password']; 

    if(empty($username) === true || empty($password) === true){ 
     echo 'You need to enter a username and password'; 
    } 
    else if(user_exists($username) === false) { 
     echo 'We can\'t find that username.'; 
    } 
} 

?> 
+3

biến '$ db' của bạn là bên trong một hàm và do đó ra khỏi phạm vi từ các mã định nghĩa nó. Tuyên bố nó toàn cầu, hoặc tốt hơn, vượt qua nó như là một đối số cho chức năng của bạn. Xem hướng dẫn sử dụng PHP trên [scope] (http://php.net/manual/en/language.variables.scope.php) –

+0

Tôi đã thay đổi các biến, và lỗi đầu tiên được sửa, nhưng tôi vẫn nhận được: error: Gọi hàm undefined mysqli_result() – MPStimpson

+0

Tôi nghĩ đó là bởi vì bạn đang sử dụng OOP ở phần đầu và thủ tục cho kết quả. – Rasclatt

Trả lời

11

Trước tiên, bạn tuyên bố $ db bên ngoài hàm. Nếu bạn muốn sử dụng nó bên trong hàm, bạn nên đặt này vào lúc bắt đầu của mã chức năng của bạn:

global $db; 

Và tôi đoán, khi bạn đã viết:

if($result->num_rows){ 
     return (mysqli_result($query, 0) == 1) ? true : false; 

những gì bạn thực sự muốn là:

if ($result->num_rows==1) { return true; } else { return false; } 
+0

Tôi không nhận được bất kỳ lỗi nào nữa, nhưng tôi dường như không thể nhận được vào 'user_exists ($ username) === false' khi tôi thử nghiệm để bạn có bất kỳ sự khôn ngoan nào khác để chia sẻ với tôi hôm nay :) – MPStimpson

+0

Có, truy vấn SQL của bạn sẽ luôn trả về 1 hàng, với 1 trường cho biết số lượng người dùng bằng với tên người dùng. Thay đổi điều đó thành '" SELECT * FROM users WHERE UserName = '$ username' "' và nó sẽ hoạt động –

+0

Tôi đã tìm ra điều đó, nhưng cảm ơn bạn rất nhiều! Bạn rất hữu ích! Đó là những gì tôi nhận được cho hướng dẫn sau mù quáng – MPStimpson

0

đặt dòng này trong cấu trúc gốc: $ this-> load-> database();

function __construct() { 
    parent::__construct(); 
    $this->load->library('lib_name'); 
    $model=array('model_name'); 
    $this->load->model($model); 
    $this->load->database(); 
} 

cách này .. nó nên làm việc ..

Các vấn đề liên quan