2016-12-30 2 views
-1

누구든지 해결할 수 있습니까? I는 코드 행 라인 (26)PHP 치명적 오류 : 문자열의 멤버 함수 fetch_assoc()을 호출하십시오.

PHP Fatal error: Call to a member function fetch_assoc() on string in C:\inetpub\wwwroot\dbcontroller.php on line 26

에러이 광고 코드를 갖는 : $ = $가 질의 -> fetch_assoc()를 발생; 이 오류가 발생하지 않는

$result = $query->fetch_assoc(); 

을 -

$result = mysqli_query($query); 

그리고이 라인을 주석 -

<?php 
class DBController { 
private $host = "localhost"; 
private $user = "root"; 
private $password = " "; 
private $database = "test"; 

function __construct() { 
    $conn = $this->connectDB(); 
    if(!empty($conn)) { 
     $this->selectDB($conn); 
    } 
} 

function connectDB() { 
    $conn = mysqli_connect($this->host,$this->user,$this->password); 
    return $conn; 
} 

function selectDB($conn) { 
    mysqli_select_db($conn,$this->database); 
} 


function runQuery($query) { 
    $result = $query->fetch_assoc(); 
    // $result = mysqli_query($query); 
    while($row=mysqli_fetch_assoc($result)) { 
     $resultset[] = $row; 
    }  
    if(!empty($resultset)) 
     return $resultset; 
} 

function numRows($query) { 
    $result = mysqli_query($query); 
    $rowcount = mysqli_num_rows($result); 
    return $rowcount; 
} 
} 
?> 
+0

mysqli_query 첫 번째 인수는 연결 개체입니다. –

+0

[치명적 오류 : 문자열에서 \ _assoc()을 가져 오는 멤버 함수 호출] (http://stackoverflow.com/questions/36849960/fatal-error-call-to-a-member-function-fetch- assoc-on-string) –

+0

그래서 어떻게해야합니까? 나는 PHP에 아주 익숙하다. – nat8991

답변

0

당신은 코드 행의 주석을 해제해야합니다.

+0

PHP 경고 : mysqli_query()는 적어도 2 개의 매개 변수를 필요로합니다. 1은 C : \ inetpub \ wwwroot \ ajax-add-edit-delete-records-in-database-using-php-and-jquery \ dbcontroller.php 온라인 27 PHP 경고 : mysqli_fetch_assoc()은 매개 변수 1을 mysqli_result로 예상하고 C : \ inetpub \ wwwroot \ ajax-add-edit-delete-records-in-database-using-php-and-jquery \ dbcontroller.php 라인 28에 – nat8991

+0

Rahul, 내가 언급 한 라인의 주석을 없애고 당신이 제안한 라인을 주석 후에 이것은 일어난. – nat8991

+0

죄송합니다. 올바른 구문은 다음과 같습니다. - $ result = mysqli_query ($ conn, $ query); –

0

오류는 아주 자명합니다. 문자열에서 함수를 호출 할 수 없습니다 (예 : 귀하의 경우에는

// Wrong 
$name = 'Johnny'; 
echo $name->foo(); 

:

function runQuery($query) { 
    $result = $query->fetch_assoc(); 
    // [...] 
} 

이 ... 당신이 $query이 포함되어 있지만 문맥의는 SQL 코드 문자열입니다 제안 무슨 말을하지 않습니다. 간단히 말해, 이제는 mysqli 확장이 사용되는 방법입니다. 언제든지 the manual을보고 usage examples을 참조하십시오.

0

나는 이것에 대한 논쟁을 놓치고 있다고 생각합니다.

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

/* fetch associative array */ 
while ($row = $result->fetch_assoc()) { 
    printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); 
} 
0
I changed your code, Now try. 
<?php 
    class DBController { 
    private $host = "localhost"; 
    private $user = "root"; 
    private $password = " "; 
    private $database = "test"; 

    function __construct() { 
     $conn = $this->connectDB(); 
     if(!empty($conn)) { 
      $this->selectDB($conn); 
     } 
    } 

    function connectDB() { 
     $conn = mysqli_connect($this->host,$this->user,$this->password); 
     return $conn; 
    } 

    function selectDB($conn) { 
     mysqli_select_db($conn,$this->database); 
    } 


    function runQuery($query) { 
     $result = mysqli_query($query); 
     while($row= $result->fetch_assoc()) { 
      $resultset[] = $row; 
     }  
     if(!empty($resultset)) 
      return $resultset; 
    } 

    function numRows($query) { 
     $result = mysqli_query($query); 
     $rowcount = mysqli_num_rows($result); 
     return $rowcount; 
    } 
    } 
    ?> 
관련 문제