在MySQL中保存图像URL?

时间:2011-08-26 04:26:24

标签: php mysql image url

我实际上有几个问题:我的最终目标是编写一个脚本,它将自动显示我在数据库中保存的所有图像(如果我将新图像添加到我的数据库(图像URL),每次我刷新页面我希望这些“新”图像能够立即显示。

  1. 在MySQL中保存图片网址的正确方法是什么?目前我将输入类型设置为VARCHAR;图像网址没问题吗?

  2. 此外,目前我正在使用WAMP服务器来测试网站的工作方式;所以我把一个图像放在www文件夹里(与我的php脚本在同一个文件夹中),在数据库表中,我只需将URL放入如下:image.png
    这是输入图像URL的正确方法我的数据库?

  3. 按序列显示这些图像的最佳方法是什么?以下代码是我到目前为止的代码:(图像宽度将占据页面的大约70%,因此图像不会彼此相邻;它们将以列形式出现。)

    <?php
       $db_host="host";
       $db_user="user";
       $db_pass="pass";
       $db_name="name";
       $db_table="table";
    
       mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
       mysql_select_db($db_name) or die(mysql_error());
    
       $query = mysql_query("SELECT * FROM tablename");
       $result = mysql_query($query);
       $num = mysql_num_rows($result);
    
       for($count = 0; $count < $num; $count++)
       {
           //output the rows one by one(the actual images, not the URLs)
           mysql_fetch_row($result);
           echo("<br/>");
       }
    ?>
    

    我不知道我是否应该在那里使用mysql_fetch_row ..

  4. 我希望我的图像之间有一些空间;我认为最好的方法是在循环结束时添加一个“br”标记,这样每次显示一个新图像时,都会在页面末尾添加换行符。是吗最好的方法吗?

  5. 提前致谢!

3 个答案:

答案 0 :(得分:2)

对于你的第一个问题,是的。如果您的所有图像都存储在同一目录中,那么也是如此。大多数情况下,这是一个偏好问题。

你的for循环应如下所示:

  for($count = 0; $count < $num; $count++) {
       $row = mysql_fetch_assoc($result);
       echo "<img src='". htmlspecialchars($row["image"]) ."' alt='image' />";
   }

br标签可能是一个坏主意。在CSS文件中将图像'display属性设置为block。网上有很多CSS手册。

答案 1 :(得分:1)

使用

$query = mysql_query("SELECT * FROM tablename");
$result = mysql_query($query);
$num = mysql_num_rows($result);
你做了两次事情。您不希望$query成为mysql_query()电话的结果,然后再次应用mysql_query()

在这种情况下,第二次调用将使用资源对象而不是字符串 - 您已了解它。通过放置"",你可以将它再次变成一个字符串,但是对mysql没有意义。

要验证这一点,请尝试将or die(mysql_error())置于有问题的电话中。

要解决此问题,您可以尝试

$query = "SELECT * FROM tablename";
$result = mysql_query($query) or die(mysql_error());
$num = mysql_num_rows($result);

顺便说一句:当您用

替换$num循环时,您不需要for
while ($row = mysql_fetch_row($result))
    // do stuff with $row 
}

答案 2 :(得分:0)

我在SQL数据库中完成了基于图像存储的先前项目。存储图像的最佳方式是链接,即'/stored_images/imagefilename.png'。当您需要引用图像时,只需将图像放入表格中每行的while循环中。

获取图片

<?php
$query = mysql_query("SELECT * FROM tablename");
while ($row = mysql_fetch_array($query)) {
echo '<img src="' . $row['column of url storage in SQL'] . '" />';
}

这将输出数据库中的所有图像,只需使用存储在SQL DB中的实际列名更改“SQL中的url存储列”。还将SQL查询中的'tablename'替换为存储图像的表的名称。