2014-11-25 3 views
0

본인의 코드와 관련된 해결책이 없으므로이 오류를 확인했습니다. 나는 mysqli_connect() 호출을 사용하여 mysql 서버에 연결했다. 다음 전체 웹 사이트를 통해이 가능하도록 할 $_SESSION에 연결 결과를 전달 - 난 보통 내 모든 다른 프로젝트에서처럼, 그러나 어떤 이유로 내가 오류가 계속하는 것은 :mysqli_query() : mysqli를 가져올 수 없습니다.

"mysqli_query(): Couldn't fetch mysqli" 

생성하는 코드가있다 오류 : 여기

if(!isset($_GET['sortBy'])) 
    { 
     $listSQL = "SELECT * FROM '".$_SESSION['WorkTable']."'"; 
    } 
    else 
    { 
     $listSQL = "SELECT * FROM '".$_SESSION['WorkTable']."' where ".$_GET['sortBy']."='".$_GET['sortBy']."'"; 
    } 

    //get Contacts From DB 
    if(!empty(mysqli_query(@$_SESSION['IMWEDBcxn'],$listSQL))) 

내가 여기

if(!empty($cxn)) 
{ 
    $_SESSION['WorkTable'] = $dbTable; 

    $_SESSION['IMWEDBcxn'] = $cxn; 
} 

아무것도 누락 ... 연결 클래스 코드?

이반 Solntsev에서 언급 한 바와 같이
+0

$ _SESSION [ 'IMWEDBcxn']보다 전에 char @가있는 이유는 무엇입니까? 나는 함수에서 경고를 피하는 데 사용되는 것을 알고 있지만 mysqli 연결의 링크처럼 사용되는 변수가 있습니다. – Serpes

+0

세션에 연결 처리기를 저장할 수 없습니다. [직렬화 할 수 없습니다] (http://php.net/manual ////intro.session.php) –

+0

@Serpes가 '@'을 무시합니다 ... 일부 문제 해결을 시도했습니다 –

답변

2

2 분명한 이유 사용자의 세션에서 연결 처리기를 저장하지 않는 :

1 핸들러는 직렬화 할 수 없습니다.

2 사용자 세션에 저장 한 내용 ($_SESSION 사용)은 해당 사용자 범위에서만 사용할 수 있습니다. 세션과 PHP에 대한 자세한 내용을 보려면 $_SESSION은 세션을 통해 데이터를 저장하는 방법이 아닙니다.

그래서 같은 일을 :

$connect = mysqli_connect("..."); 
$_SESSION["dbconnection"] = $connect; 

mysqli_query($_SESSION["dbconnection"], $query); 

이 잘못!

영구 연결을 원하면 각 DB 쿼리에 다시 연결하지 않으려면 MySQLi 및 영구 연결 인 http://php.net/manual/en/mysqli.persistconns.php을 읽어보십시오. PHP 버전 5.3 이상에서 실행중인 경우 PDO를 사용하는 것이 좋습니다 (PHP 버전과 관계없이 권장합니다).

관련 문제