【问题标题】:Save image URLs in MySQL?在 MySQL 中保存图像 URL?
【发布时间】:2011-11-04 05:27:08
【问题描述】:

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

  1. 在 MySQL 中保存图像 URL 的正确方法是什么?目前我将输入类型设置为 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”标签,这样每次显示新图像时,都会在页面末尾添加一个换行符。是吗最好的方法是什么?

提前致谢!

【问题讨论】:

  • php.net 上有很好的例子,只要输入 mysql

标签: php mysql image url


【解决方案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);

顺便说一句:当您将 for 循环替换为

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

【讨论】:

  • 非常感谢。我不敢相信我没有注意到 mysql_query 的重复调用。现在工作。谢谢。 :)
【解决方案2】:

我之前做过一个基于 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 中的 url 存储列”更改为您存储在 SQL DB 中的实际列名。还将 SQL 查询中的“tablename”替换为存储图像的表的名称。

【讨论】:

    【解决方案3】:

    对于你的第一个问题,是的。如果您的所有图像都存储在同一目录中,那么第二个也是可以的。不过,这主要是一个偏好问题。

    您的 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 手册。

    【讨论】:

      猜你喜欢
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2015-07-25
      相关资源
      最近更新 更多