2016-12-30 12 views
-1

誰でもこの問題を解決できますか?私はPHP致命的なエラー:文字列のメンバ関数fetch_assoc()を呼び出す

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

のエラーでこのラインコードを有するライン26のコード行である。)$結果= $ query-> 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-record-in-database-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 on line 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; 
    } 
    } 
    ?> 
関連する問題