我实际上有几个问题:我的最终目标是编写一个脚本,它将自动显示我在数据库中保存的所有图像(如果我将新图像添加到我的数据库(图像URL),每次我刷新页面我希望这些“新”图像能够立即显示。
在MySQL中保存图片网址的正确方法是什么?目前我将输入类型设置为VARCHAR;图像网址没问题吗?
此外,目前我正在使用WAMP服务器来测试网站的工作方式;所以我把一个图像放在www文件夹里(与我的php脚本在同一个文件夹中),在数据库表中,我只需将URL放入如下:image.png
这是输入图像URL的正确方法我的数据库?
按序列显示这些图像的最佳方法是什么?以下代码是我到目前为止的代码:(图像宽度将占据页面的大约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 ..
我希望我的图像之间有一些空间;我认为最好的方法是在循环结束时添加一个“br”标记,这样每次显示一个新图像时,都会在页面末尾添加换行符。是吗最好的方法吗?
提前致谢!
答案 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'替换为存储图像的表的名称。