2017-11-29 13 views
0

비슷한 코드가 오류없이 작동하지만 데이터베이스를 쿼리하고 쿼리 할 때 몇 가지 오류가 발생합니다. 누구든지 도와 줄 수 있습니까?mysqli_query의 정의되지 않은 변수

오류 :

공지 사항 : 정의되지 않은 변수 : C에서 링크 : \ wamp64 \ www가 \ 트위터 클론 \ functions.php 라인 (22)에

경고 : mysqli_query()는 매개 변수 1 mysqli 될 것으로 예상 , 줄에 C : \ wamp64 \ www \ twitter 클론 \ function.php에 주어진 null

경고 : mysqli_num_rows() 매개 변수 1 mysqli_result, C : \ wamp64 \ www \ twitter 클론 \ 기능에 주어진 것으로 예상 .php on line 24

코드;

+0

모든 오류는 첫 번째 [** 가변 범위 **] (http://php.net/manual/en/language.variables.scope.php) 문제와 관련이 있습니다. – FirstOne

+0

[참조 : 변수 범위 란 무엇이며 어디에 변수가 "정의되지 않은 변수"오류에서 액세스 할 수 있습니까?] (https://stackoverflow.com/questions/16959576/reference-what-is-variable-scope-which- variables-are-accessible-from-where) – FirstOne

+0

물론! 나는 $ link global을 만들 필요가있다 – oversoon

답변

1

$link 변수가 함수의 로컬 범위에없는 것이 문제입니다.

global $link 

PHP의 변수 범위에 대한 자세한 내용을 읽을 수 this page에서 봐주십시오 :

이 문제를 해결하기위한 방법은 함수에 다음 줄을 추가하여 함수의 로컬 범위의 변수를 정의하는 것입니다 .


편집 :

더 좋은 방법이 같은 코드를 봐 뭔가있을 것이다, 당신의 함수에 인수로 추가하여 연결을 주입하는 것입니다 :

function displayTweets($type, $connection) { 
    if ($type == 'public'){ 
     $whereClause = ""; 
    } 

    $query = "SELECT * FROM tweets ".$whereClause." ORDER BY 'datetime' DESC LIMIT 10"; 

    $result = mysqli_query($connection, $query); 

    if (mysqli_num_rows($result) == 0) { 
     echo "No Tweets"; 
    } 
} 

을 그 후에 displayTweets('public',$link)을 사용하여 'public'이 유형이고 $link이 정의 된 연결 인 경우


현재 함수에서 $whereClause은 정의되지 않았을 수 있습니다. 나는 당신이 이것에 대해 알고 있다고 생각하고있다. 단지 당신이 그것에 오류를 범할 수 있기 때문에 그것을 진술하고 싶었다.

+0

아마 함수 인수로 연결을 삽입하는 것이 좋습니다. – FirstOne

+0

분명히있을 것입니다.입력을 시작할 때 잊어 버린 답변을 편집 – InzeNL

+0

편집 된 답변에서와 같이 연결을 삽입 할 때, 함수 호출의 인수 목록에 추가하는 것을 잊지 마십시오 :'displayTweets (something, $ link);' – FirstOne

0

displayTweets 함수에서 $ link 변수를 전역 변수 ($ GLOBALS [ 'link'])로 사용해야하거나 $ link를 매개 변수로 전달해야합니다.

$ result = mysqli_query ($ GLOBALS [ 'link'], $ query);

또는

displayTweets ('공공', $ 링크)