2013-02-04 2 views
0

mysqli 연결을 준비된 문을 사용하기 위해 클래스에 전달하려고합니다. 그러나, 나는 뭔가를 놓치고 그것은 작동하지 않습니다. 내가 뭘 잘못 했니? 클래스에 mysqli 연결을 전달할 수 없습니다.

다음 코드 출력

"아니오"

index.php를

$db_host = 'localhost'; 
$db_name = 'my_database'; 
$db_user = 'my_user'; 
$db_password = 'my_password'; 

$con = new mysqli($db_host,$db_user,$db_password,$db_name); 
if (mysqli_connect_errno()) 
{ 
    die(mysqli_connect_error()); 
} 

$obj = new Obj($con); 

obj.php

Class Obj 
{ 
    public function __construct(mysqli $con) 
    { 
     $sql = "SELECT * FOM myTable"; 
     if($con->prepare($sql)) 
     { 
      echo "yes"; 
     } 
     else 
     { 
      echo "no"; 
     }   
    } 
} 
+1

if ($ con-> prepare ($ slq))','$ sql' 대신'$ slq' 패스 –

+0

죄송합니다. 이 글을 쓸 때 오타가되었습니다. 나는 지금 – Typhoon101

+0

을 생성자로 편집했고,'print_r ($ con)'을 사용하여 $ con를 얻었는지 아닌지 확인한다. –

답변

0

당신은 mysqli를 전달하는 데 실패했다면 수업에 연결하면 NG이 라인에 치명적인 오류 :

public function __construct(mysqli $con) 
          ^^^^^^ 

뿐만 아니라 생성자가 잘 실행 시작, 당신도 클래스 메소드에 액세스 할 수 있습니다

if($con->prepare($sql)) 

는 요약하기를, 모든 일이 mysqli::prepare() 반환 false SQL 문을 준비하는 동안 오류가 발생했습니다. 나는 MySQL은 익숙하지 않아요하지만 당신은 아마 mysqli::$error_list 또는 mysqli::$error으로 정확한 오류 메시지를 얻을 수 있습니다 : SELECT * FOM myTable 실제 쿼리가

if($con->prepare($slq)) 
    { 
     echo "yes"; 
    } 
    else 
    { 
     echo "no: " . $con->error; 
    } 

경우에, 나는 당신이 FROM을 철자가 틀리 한 이후 간단한 구문 오류입니다 가정합니다.

0
Class Obj { 
    public function __construct(mysqli $con) { 
    $sql = "SELECT * FROM myTable"; 
    if($con->prepare($sql))  //here, u pass $slq before 
    { 
     echo "yes"; 
    } 
    else { 
     echo "no"; 
    } 
    } 
} 
관련 문제