0

我有一些问题,使用以下代码:

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

当我使用

mysql_num_rows($getTS)

它返回 2、3 等(这是完美的),但是,当我打印出来时,我只有一个使用以下代码获取行:

$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 file cannot enter some part of code):

$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_*它已被弃用,并且 PDO 具有开箱即用的此类功能。

于 2013-01-01T10:40:54.307 回答