0

次のコードを使用すると、多少の問題があります。

$getTS = mysql_query("SELECT * FROM book WHERE chapter='$url' && verse='$verse'");      

私が使うとき

mysql_num_rows($getTS)

2、3などを返します(これは完璧です)が、印刷すると、次のコードを使用して1行しか取得できません。

$rowTS = mysql_fetch_array($getTS);
$summary = $rowTS['text'];
echo $summary;

どんな助けでも大歓迎です。

4

3 に答える 3

5

これをループで行う必要があります

while($rowTS = mysql_fetch_array($getTS)) { 
   $summary = $rowTS['text']; 
   echo $summary; 
}
于 2013-01-01T10:31:25.197 に答える
2

mysql_fetch_array()を使用している場合は、繰り返しループが必要です

ドキュメントから

フェッチされた行に対応する配列を返し、内部データ ポインターを前方に移動します。

$getTS = mysql_query("SELECT * FROM book WHERE chapter='$url' && verse='$verse'");      

while ($row = mysql_fetch_array($getTS , MYSQL_NUM)) {
       $summary = $row['text']; 
       echo $summary;
}
于 2013-01-01T10:34:19.870 に答える
2

これは、いわゆるイテレータを使用して行うことができます。古いmysql_*関数はそれを提供しませんが、簡単に書くことができます (または再利用できます。この以前の回答を参照してください: PHP ファイルはコードの一部を入力できません):

$getTS = mysql_query("SELECT * FROM book WHERE chapter='$url' && verse='$verse'");
$rows  = new MySqlResult($getTS);
foreach ($rows as $row)
{
    $summary = $row['text'];
    echo $summary;
}

データベースオブジェクトを直接使用することで、さらに改善することができます。たとえば、クエリの場合:

$db    = new MySql();
...
$rows  = $db->query("SELECT * FROM book WHERE chapter='$url' && verse='$verse'");
foreach ($rows as $row)
{
    $summary = $row['text'];
    echo $summary;
}

次のステップはおそらく、PDO を使用することですmysql_*

于 2013-01-01T10:40:54.307 に答える