2017-07-12 13 views
-2
<?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 LIMIT 3"; //Example table 
$result = $mysqli->query($query); 

//!!!!!! 
while($row = $result->fetch_array()) 
{ 
    echo $row["Name"]; 
} 

/* close connection */ 
$mysqli->close(); 

//This example is from php.net 
?> 

ループ中(完全に理論上)に何が起こっていますか?私は、$rowという名前の新しい変数が作成されていることがわかります。そして、mysqliクエリを使って検索した結果、行から配列に変換されています。しかし、配列は真であるブール値ではありません。したがって、どのようにwhileループを実行することができますか?私は基本的に何か間違ったことを理解しており、私が誤解していることを知りたいと思っています。ドを使用してPHP/MYSQLI:whileループの理論は、クエリ結果をループします。

+5

ブーリアン:基本的には、偽でない限り、真とみなすことができます。 '$ row'は、フェッチがfalseを返すときにのみfalseに設定されます。これは、結果セットから次の結果を返さないときです。つまり、結果がなくなってセットから戻るときです。 – RiggsFolly

+0

@RiggsFollyありがとう! – VicStudio

+0

@RiggsFolly '$ row = $ result-> fetch_array()'と 'while($ row){..}'のようなやり方を教えてください。 – VicStudio

答えて

-2

/

ながらこれはwhileループを使用して、そのずっと簡単、必ずしも良いアイデアではありませんが、あなたがループする前に、結果セットの最初の行をチェックしたいかもしれないいくつかの状況がありますすべての結果。

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

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

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3"; 

$result = $mysqli->query($query); 

// to make sure there is something in the result set 
if ($result->num_rows() > 0) { 

    $row = $result->fetch_array() 

    do { 
     echo $row["Name"]; 
    } while($row = $result->fetch_array()) 
} 
?> 
関連する問題