为什么这个php代码没有从mysql数据库中获取第一行?

时间:2016-11-12 21:46:50

标签: php mysql

似乎这个php代码获取了数据库中的所有行,但是没有获取第一行。如果调用数据库中的过程(请参阅下面的过程),它将按预期显示所有行。数据库有四列,在代码中它使用echo打印出第二行的数据,发生的事情是第一条记录没有显示,所以它没有被提取我认为。那么,可能是什么问题?

    //this is the broken part of my code
    $statement = $conn->prepare('call GetImage()');

        $statement->execute();

      while($row = $statement->fetch()){

    $dest_slash = str_replace('-', '/', $row[2]);
    $dest_slash_backslash = str_replace(';','\\', $dest_slash);
    $replace_root = str_replace($_SERVER['DOCUMENT_ROOT'],'',$dest_slash_backslash);
    $row[2] = $replace_root;

    $images_paths_with_num[] = array($image_count,$row[2]);
    $image_count++;
    echo $row[1];
  }

这是我正在使用的存储过程:

    CREATE DEFINER=`0901972749`@`%` PROCEDURE `GetImage`()
begin
    select imageID,imageName,imagePath,imageText
    from Images limit 500;
end

1 个答案:

答案 0 :(得分:-1)

请参阅此程序(与问题中的相同):

   CREATE DEFINER=`0901972749`@`%` PROCEDURE `GetImage`()
begin
    select imageID,imageName,imagePath,imageText
    from Images limit 500;
end

在这种情况下需要添加一个order by语句" orderID by imageID"因为事情没有以正确的顺序显示。为了确保数据将以正确的顺序显示,我们需要使用order by子句。但是,存储过程可能不是正确的解决方案。抱歉:)

像这样:

CREATE DEFINER=`0901972749`@`%` PROCEDURE `GetImage`()
begin
    select imageID,imageName,imagePath,imageText
    from Images limit 500 order by imageID;
end