2017-12-13 16 views
-1

fetch assocに問題があります。オブジェクトにブール値ではないと期待してエラーが返されていますが、 "結果"はオブジェクトではありませんブール値、これを引き起こす原因は何ですか?PHPエラーオブジェクトの代わりにブール値が与えられましたが、オブジェクトを与えています

try{ 
$someSQL = "Call SomeSproc()"; 
$results = mysqli_query($connection,$someSQL); 
}catch(Exception $ex) 
{ 
echo("Error: " . __LINE__ . " " .$ex); 
} 

print_r($results);//says I have 14 results 
echo gettype($results);//prints object 

while($result = mysqli_fetch_assoc($results)) 
{} 

これはエラー

mysqli_result Object ([current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 14 [type] => 0) object 
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in "path" 
+0

Aは、 PHP関数の多くはエラー時にfalseを返します。何が起こっているかを見るためにif(mysqli_fetch_assoc($ results)=== false)を試しましたか? –

+0

おそらくその複製されています。だから、この投稿を見てください。https://stackoverflow.com/questions/11347971/mysqli-fetch-assoc-expects-parameter-1-to-be-mysqli-result-boolean-given – dodoconr

+0

@MarceloStaudt私はそれを試みます。あなたが私のコードで見ることができるdodoconrはありません。私の結果はprint_rからbooleanまたはfalseを返さない –

答えて

0

は、おそらくあなたがwhileループ中にいくつかのブール変数で$results値を上書きしているので、それはあなたが含まれていない、あなたのコードのタイプミス可能性があります。


コードをダブルチェック、または手続き的なスタイルを使用して、次のexampleを使用して、それを書き換えてみてください。

<?php 
$link = mysqli_connect("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5"; 

if ($result = mysqli_query($link, $query)) { 

    /* fetch associative array */ 
    while ($row = mysqli_fetch_assoc($result)) { 
     printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); 
    } 

    /* free result set */ 
    mysqli_free_result($result); 
} 

/* close connection */ 
mysqli_close($link); 
?> 

ここでは、オブジェクト指向のスタイルを使用したバージョンです:

<?php 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5"; 

if ($result = $mysqli->query($query)) { 

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 
     printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); 
    } 

    /* free result set */ 
    $result->free(); 
} 

/* close connection */ 
$mysqli->close(); 
?> 
関連する問題