2014-03-24 51 views
1

我想知道是否有任何方法可以将图像URL存储在具有唯一数字ID的数据库中,并且php页面通过从数据库获取数据(图像URL)并将其显示给image.php页面?MySQL数据库存储图片url和php页面显示吗?

这方面的一个例子是: - 具有图像URL http://www.example.com/images/image10.jpg(其中该URL将被存储在数据库中,沿着10的ID) - 具有从检索图像URL的页面image.php数据库并在同一页面(image.php页面)上显示图像(并且不重定向到图像URL) - 一个示例结果是image.php?id = 10 image.php文件将源图像URL从图像ID为10的数据库(使用我的示例:www.example.com/images/image10.jpg)并显示它(这样就像查看图像一样,就好像您正在查看www.example.com/images /image10.jpg而是URL将是http://www.example.com/image.php?id=10

是有没有办法做到这一点? 我是新来的PHP和MySQL,所以不太好的代码 - 试图实验:)

在此先感谢!

编辑: 我认为人们越来越困惑我的坏描述(抱歉abot)。 我注意到你的答案,你已经在你的代码中包含了实际的图片网址 - 我不明白为什么。

实例的我想这是如何工作的:

我的表将有这些精密组件: img_id img_url

的image.php文件将使用该ID获取img_url从表image.php url的结尾。例如: - image.php?id = 10 - image.php文件将使用id(它是10),并通过检索img_url来显示图像(这可能是:www.example.com/images/image10 .jpg)并显示它 - 图像ID将是img_id在表中。 - image.php?id = 12 - image.php文件将使用id(它是12),并通过从img_url(这将是:www.example.com/images/image12.jpg)该表并显示它 - 图像ID将img_id在表中。

+0

你能不能给我们一些代码,你已经尝试? – steven

回答

1

你可以试试这个:

//File: image.php?id=10 
//you query 
$img = 'http://example.com/sample.jpg'; // Image path from database 
$getInfo = getimagesize($img); 
header('Content-type: ' . $getInfo['mime']); 
readfile($img); 
+0

这看起来不错,但我被你的答案感到困惑 - 我想要的PHP代码从数据库中根据ID源的图像URL,然后显示图像 - 例如Image10.jpg将有一个唯一的数字ID在数据库 - 这是10.因此,我希望image.php通过首先得到的ID来显示图像(如:image.php ID = 10?),并使用图像URL来显示图像 - 其中图像的URL将是对相同的行(或将是同一记录的一部分)与ID为'10'的记录相同。 –

+0

您的评论对我而言并不明确。请以更简单的方式解释,所以可能我可以帮助你。 –

0

我想你需要的是这样的:

$image_path="http://example.com/image10.jpg";' 'mysql_query("INSERT INTO table VALUES ('',$image_path)");

在php

有这样的:

$id=$_GET['id'];if (isset($_GET['id'])){' '$result = mysql_query("SELECT path FROM table WHERE id=$id");' '$row = mysql_fetch_row($result);' '$path=$row[0];echo "Image number ".$id." is <img src='".$path."'>';}

+0

感谢您的回答。我很困惑,虽然 - 为什么图像的URL会在这个PHP代码中,如果PHP文件必须从数据库中获取图像URL? –

+0

你说你想要的链接是这样的:http://www.example.com/image.php?id=10。这意味着你想通过链接发送id。 PHP从$ _GET ['id']的链接中获取id。然后在数据库中搜索具有此ID的图像。当它发现它需要路径。如果所有的图像看起来是这样的:图片10图片11等可以使用$ PATH = 'HTTP://www.example.com/image.php ID =?'; $路径= $ _ GET [ 'ID']。 $ PATH = 'JPG。'。此代码将生成http://www.example.com/image.php?id=10。用“。=”连接字符串。 – Alex7

+0

Mysql的注入将在这里工作很轻松,还可以使用mysqli_ *功能mysql_ *标记为弃用 – demonking

0

这一切取决于你的代码组织,让我解释一下我的自我,现在在我心中,我可以想到两种组织方式:

首先,使用包含所有图像的文件夹,每个图像具有相同的名称+编号;例如:images/img1.jpg - images/img2.jpg - images/img3。JPG等

使用这种方法你不必使用连数据库,只需在您的网页,你去这个代码,用于为例页面http://exemple.com/images.php?id=10

$id = (isset($_GET["id"]))? $_GET["id"] : NULL; //Get the ID 

然后使用由user3410107

给出的方法
$img = "http://example.com/img$id.jpg"; // Image path 
$getInfo = getimagesize($img); 
header('Content-type: ' . $getInfo['mime']); 
readfile($img); 

第二种方法确实是使用数据库,在这种情况下,应该有分贝内至少2列,一个唯一的ID +图片的路径,在这种情况下,你会去:

$query = mysql_query("SELECT id, imagePath FROM table WHERE id = $id"); 
while($data = mysql_fetch_assoc($query)){ 
$img = $data["imagePath"]; 
} 

一旦你的图像路径,相同的过程之前:

$getInfo = getimagesize($img); 
header('Content-type: ' . $getInfo['mime']); 
readfile($img); 

出于安全考虑加入这一行$ id变量后

$id = (isset($_GET["id"]))? $_GET["id"] : NULL; //Get the ID 
$id = mysql_real_escape_string($id); 
+0

请使用mysqli_ *功能,mysql_ *标记为过时 – demonking

+0

谢谢!第二种方法是我想要的方法! –

相关问题