MySQL显示多行

时间:2013-01-01 10:29:03

标签: php mysql

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

$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;

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

你必须在循环中执行此操作

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

答案 1 :(得分: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;
}

答案 2 :(得分: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,因为{@ 1}}已被弃用,PDO带有开箱即用的这种功能。