2012-05-31 3 views
12

저는 웹 사이트의 일부 함수를 빌드하려고 노력 중이며, 그 중 일부는 mysql 데이터베이스에서 데이터를 가져 오는 에 있습니다. 내가 함수 외부 코드를 테스트 할 때 제대로 작동하는 것 같습니다.mysqli/mysql 쿼리 함수가 작동하지 않습니다.

require('db.php'); 
require('functions.php'); 

$email = '[email protected]'; 

if (user_exists($email) == true){ 
echo "Good news, this exists"; 
} 

지금 db.php를 :

$db = new MySQLi("localhost","test","test","test"); 
if ($db->connect_errno){ 
    echo "$db->connect_errno"; 
} 

그리고 functions.php 파일 :

function sanitize ($data){ 
    $db->mysqli_real_escape_string($data); 
} 
function user_exists($usermail){ 
    $usermail = sanitize($usermail); 
    $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); 
    $check = $query->num_rows; 
    return ($check == 1) ? true : false; 
} 

내가지고있어 오류 그래서 여기가 첫 번째 페이지입니다 제 1 파일에 액세스하는 것은 :

Notice: Undefined variable: db in C:\xampp\htdocs\auctior\inc\functions.php on line 6 

Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\auctior\inc\functions.php on line 6 

SO I db.php가 필요/포함되어 있습니다. $ db는 mysqli 연결입니다. 그리고 같은 파일 (첫 번째 파일) 내가 functions.php에있는 함수를 호출 내에서

는 ......이 나를 화나게입니다 나는 당신의 도움을 주셔서 감사합니다 것 , 사전에 감사

답변

21

global 키워드를 사용해야 할 수도 있습니다. 그렇지 않으면 $db은 로컬 범위의 var로 간주됩니다.

function sanitize ($data){ 
    global $db; 
    $db->mysqli_real_escape_string($data); 
} 

function user_exists($usermail){ 
    global $db; 
    $usermail = sanitize($usermail); 
    $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); 
    $check = $query->num_rows; 
    return ($check == 1) ? true : false; 
} 
+0

오 당신이 내 친구 감사합니다 :) 당신은 : 당신은 내 일 저장 한 얼마나 나는이 바보 문제 해결에 넣어 시간 아무 생각이 없습니다. 고맙습니다. – inrob

0

함수 내부에 연결을 시도하면 함수를 포함하기 전에 연결을 포함시켜야합니다. 이 같은

뭔가 :

function user_exists($usermail){ 
    $db = new MySQLi("localhost","test","test","test"); 
    $usermail = sanitize($usermail); 
    $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); 
    $check = $query->num_rows; 
    return ($check == 1) ? true : false; 
} 
+0

제안 해 주셔서 감사합니다. 하지만 모든 단일 함수에 연결 쿼리를 포함시키지 않는 것이 좋습니다. 하지만 고마워.) – inrob

관련 문제