0
$search = mysql_query("SELECT subject FROM book WHERE useid = $userid") or die(mysql_error());
$sub = mysql_fetch_array($search, MYSQL_ASSOC);
print_r($sub);

book テーブルには同じユーザー ID の件名がたくさんありますが、最初に取得するだけです。なぜですか?

4

3 に答える 3

2

mysql_fetch_array現在の行のみの配列表現を返します。

結果行を連想配列、数値配列、またはその両方としてフェッチします

返されたすべての行を反復するには、ループを使用する必要があります。

$search = mysql_query("SELECT subject FROM book WHERE useid = $userid") or die(mysql_error());
while($sub = mysql_fetch_array($search, MYSQL_ASSOC)) {
    print_r($sub);
}
于 2013-09-22T08:22:22.533 に答える
0

mysql* は公式に減価償却されているため、mysqli* または準備済みステートメントを使用する必要があります

//$Conn =  new mysqli(host, username, pass, db);   
$sqlquery = "SELECT subject FROM book WHERE useid = $userid";    
//Execute the query reurns data into a $result
$result = $Conn->query($sqlquery);    
//results into a associative array
$resultArray = $result->fetch_all(MYSQLI_ASSOC); 
print_r($resultArray);

またはPDOStatement::fetchAll

<?php
$sth = $dbh->prepare("your query");
$sth->execute();

/* Fetch all of the remaining rows in the result set */
print("Fetch all of the remaining rows in the result set:\n");
$result = $sth->fetchAll();
print_r($result);
?>
于 2013-09-22T08:32:19.060 に答える
0

この結果を解析する必要があります

while($sub = mysql_fetch_array($search, MYSQL_ASSOC)){
 print_r($sub);
}

この理由

mysql_fetch_array 関数は連想配列を返しますが、返す行がもうない場合は FALSE も返します! PHP の While ループを使用すると、この情報を有利に利用できます。

"$row = mysql_fetch_array()" ステートメントを while ループの条件ステートメントとして配置すると、次の 2 つのことが達成されます。

while ループがその条件ステートメントをチェックするたびに、出力できる MySQL 情報の新しい行を取得します。

行がなくなると、関数は FALSE を返し、while ループが停止します。

したがって、関数が false を返すまでデータを出力し続けます。

于 2013-09-22T08:24:17.020 に答える