2017-04-16 97 views
-1

我一直在为此工作了四个小时,但仍然没有任何线索,所以我来到这里寻求帮助。我正在学习PHP和mySQL,我学习的方式之一就是从开源项目中学习。今天我想了解一个开源项目,并且遇到一些问题。这里是链接到开源项目:https://github.com/markpytel/Printstagram基本上,它具有类似于以下,让我们把它profileinfo.php(该文件的名称是相当欺骗,它是显示了不同的用户上传的图像页)php mySQL如何显示图像,IMG src上的问题

<?php 
$sql="SELECT pid,poster, pdate FROM photo WHERE poster='$myusername' OR pid 
in (select pid from tag where taggee='$myusername') OR pid in (select pid 
from ingroup natural join shared where username='$myusername' and username 
!= ownername) ORDER BY pdate desc"; 
$result=mysql_query($sql); 


while($row = mysql_fetch_array($result)) 
{ 
    echo "<hr>"; 
    echo "Posted by: " . $row["poster"]. " &nbsp;&nbsp;&nbsp;Time: " . $row["pdate"]."<br>"; 
    // pid is each photo's unique id in the database 
    $pidrow=($row["pid"]); 

    ?> 
    </head> 
    <body> 

    <form action="listsingleREV.php?pidrow=<?php echo $pidrow; ?>" method="POST"> 
     <input type="submit" id="pidrow" value="View this image" /> 
    </form> 
    </body> 
    </html> 

如果您点击“查看此图像”按钮,用户上传的图像将会出现。我的第一个问题是:图像src中问号的含义是什么。我知道img src中有一个PHP标记,但我不明白为什么在listsingleREV.phppidrow之间有一个问号。

listsingleREV.php看起来是这样的:

<?php 
session_start();  
$pidrow=$_GET['pidrow']; 

$conn = mysql_connect("localhost", "root", ""); 
mysql_select_db("printstagram"); 
$sql = "SELECT pid FROM photo WHERE pid=$pidrow"; 
$result = mysql_query($sql); 
?> 
<?php 
while($row = mysql_fetch_array($result)) { 
    ?> 
    <img src="imageview.php?pid=<?php echo $row["pid"]; ?>" /><br/> 
    <?php 
} 
?> 

imageview.php看起来是这样的:

<?php 

$conn = mysql_connect("localhost", "root", ""); 
mysql_select_db("printstagram") or die(mysql_error()); 
if(isset($_GET['pid'])) { 
    $sql = "SELECT image FROM photo WHERE pid=" . $_GET['pid']; 
    $result = mysql_query("$sql") or die("<b>Error:</b> Problem on Retrieving Image BLOB<br/>" . mysql_error()); 
    $row = mysql_fetch_array($result); 
    header("content-type: image/jpeg"); 
    echo $row["image"]; 
} 
mysql_close($conn); 
?> 

当然,如果一个用户点击一个按钮,查看每个图像,这是非常不方便的。所以我决定给自己一些练习和修改代码(这是Apache许可证,所以我可以做到这一点),使得图像将自动呈现在profileinfo.php上,而不需要点击按钮。由于imageview.phplistsingleREV.php显示图像,我试图用这两个文件替换profileinfo.php中的表单。我为此工作了四个小时而没有实现我的目标。有人能告诉我在profileinfo.php上显示图像的正确方法,无需点击按钮吗?

+0

'imageview.php?pid ='..?这里的问号有HTTP GET参数。 –

+4

需要注意的是,这个代码库可能不是最适合从中学习的代码。它使用的是从PHP 7中删除的API,因为它非常可怕('mysql_ *'),并且散布着绝对荒谬的[SQL注入漏洞](http://bobby-tables.com/)。如果你把它作为一个公共站点,它可以在几秒钟内被销毁。请查看[PHP正确方法](http://www.phptherightway.com/)获取有关要做什么和要避免什么的更新最新建议。 – tadman

+0

@tadman我正要评论同样的事情...... –

回答

1
As it appears in imageview.pho the $row[pid] contain the link of your image in photo table so add this line to profileinfo.php under the while loop in the place you want it to display 
<img src="<?php echo". $row["pid"]."; ?>"> 
+0

while循环之前的SQL语句应该是什么? profileinfo.php唤起imageview.php和listsingleREV.php,它们有不同的sql语句。 – gravition