2013-08-19 41 views
1

所以,我正在学习PHPMySQL,但我遇到了一个小问题。存储和处理MySQL结果

我缺少一些信息,所以这将是对我很大的帮助=)

我做一个查询针对我的数据库,并得到一个结果。这个结果是我列出的所有图像文件。

$fileSQL = $mysqli->query(" 
    SELECT * 
    FROM content 
    WHERE projID=$projectID  
"); 

所以,如果我想列出我的所有文件作为我的网页缩略图我这样做:

<?php while($row = $fileSQL->fetch_assoc()){ ?> 
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg" 
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>   
<?php } ?> 

现在,这工作得很好,当然。它循环遍历所有行,同时为每个行添加一个。

但是,我也有一个主要图像,我需要显示第一个拇指全部(在这个例子中,我使用contentFull拇指和全尺寸)。

现在,我怎样才能得到第一行的contentFull,而不让循环从第nr.2行开始?

并且一般而言;在这些情况下做什么是最好的方法?首先将结果存储到数组中,以便我可以轻松访问它,或者执行此操作的“正常”方式是什么? =)

我需要什么:

  1. 做一个查询
  2. 将主图像(使用contentFull从我的SQL结果第一 图像/内容)
  3. 然后画中的全部影像所述 结果缩略图(包括那些已经示出为 主图像的第一)预先

谢谢,且p租赁让我知道如果你需要更多的信息=)

+1

旧金山,但很高兴看到你正在学习mysqli_ *函数,而不是mysql_ *的 – Anigel

+1

尽管通过不使用参数化查询否定他们 – allen213

+0

你是什么意思的那个allen213? –

回答

1

一个简单的方案就是要做到这一点:

<?php 
$first = null; 
while($row = $fileSQL->fetch_assoc()) { 
    if(!isset($first)) $first = $row; 
    ?> 
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg" 
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>   
<?php } ?> 

现在,你必须存储在一个变量来使用,而不必存储所有的第一行产生一个数组。如果由于某种原因,你想存储阵列中的所有行,你可以简单地这样做:

<?php 
$rows = array(); 
while($row = $fileSQL->fetch_assoc()) { 
    $rows[] = $row; 
    //rest of code 
} 
?> 

然后,你可以通过引用$rows[0]

另一种选择访问第一行是不使用PHP来填充完整图片。而是使用JavaScript调用来填充第一个图像。

+0

谢谢,这将工作,但我希望有其他方法可以做到这一点?无法简单地调用某种类型的$ row [0] ['contentFull'],以便从第一行结果中获取该数据。 –

+0

如果你想这样做,然后看看使用http://php.net/manual/en/mysqli-result.fetch-all.php – Pitchinnate

+0

或者你只需​​要将所有的行存储在数组中,循环。 – Pitchinnate

0

我想你可以把你的第一张照片的while外循环:

$row = $fileSQL->fetch_assoc(); // the first picture 
if($row){ 
    // show first image if it exists 
    } 

while ($row = $fileSQL->fetch_assoc()) // etc. 

查看大图也许代码比别人不同,所以它可能是合理的。如果没有,可以考虑定义一个函数,或者使用一个计数器(或者像Pitchinnate的answer这样的标志)。

+0

,但不会在进入while循环时跳过第一行吗?因为我已经在循环之外取出一行了? –

+0

是的,所以你需要完全处理这个案例。如果它是相同的,你可以为此写一个函数,但我认为你会以不同于其他所有方式的方式显示第一个图像。 – Voitcus

+1

您可以使用'mysqli_data_seek()'http://www.php.net/manual/en/mysqli-result.data-seek.php重置搜寻 – Pitchinnate