【问题标题】:import img to data base将图像导入数据库
【发布时间】:2013-06-26 06:39:24
【问题描述】:

我正在开发用于将图像上传到数据库的代码。

图像保存在一个文件夹(img)中,在 db 中是图像的路径

我有一个为每个图像生成随机名称的功能,这就是我的问题出现的地方,图像被发送到目标文件夹但只有名称,并且没有图像扩展名(jpeg,png ...)并且无法显示...

if(count($error) == 0){

preg_match( "/\.(gif|bmp| png| jpg|jpeg){1}$/i", $imagem["name"], $ext);

$nameImg = md5(uniqid(time () ) ).".".$ext[1];

$pathImg ="img/".$nameImg;

move_uploaded_file($img ["tmp_name"], $pathImg);

$sql = mysql_query("INSERT INTO user VALUES ( ' ', ' ".$name. " ', ' ".$email. "', ' ".$nameImg. "') ");

我做错了什么?

谢谢

【问题讨论】:

  • 对于初学者,添加一些错误捕获。那么,究竟是什么不起作用?
  • 您不需要扩展来显示图像。 <img src="animage" /> 应该可以正常工作。

标签: php mysql database image insert


【解决方案1】:

您可以简单地使用以下内容检索文件扩展名,然后将其添加到末尾。

$ext = pathinfo($imagem['name'], PATHINFO_EXTENSION);

$pathImg ="img/".$nameImg.".".$ext;

【讨论】:

    【解决方案2】:

    在 ER 中,在 png 和 jpg 之前有一个空格。这可能是错误。您也可以尝试在移动文件之前检查是否有扩展名。 附: $imagem 包含什么?

    【讨论】:

    • $imagem = $_FILES['imagem'];已经有效:) 但我无法显示 $sql = mysql_query("SELECT * FROM user ORDER BY id DESC"); while ($user = mysql_fetch_object($sql)) { echo " imagem. "'/>"; } ?>
    【解决方案3】:

    preg_match 模式有问题。我删除了空格和{1},它们仅对应于 1 个符号。

    preg_match( "/\.(gif|bmp|png|jpg|jpeg)$/i", $imagem["name"], $ext);
    

    【讨论】:

    • 谢谢!有了这个更改,现在保存带有扩展名的图像! (1a70e808a99af4ad1391d3c691b5f5ca.png) 但是如果尝试显示图像继续失败! $sql = mysql_query("SELECT * FROM user ORDER BY id DESC"); while ($user = mysql_fetch_object($sql)) { echo " imagem. "'/>"; } ?>
    • 是的,所以你必须在我的答案附近打勾:D
    • 那又怎样?按下它你不会丢失任何东西。
    • 按哪里?抱歉,我是新手!今天是我在stackoverflow的第一天!!! :)
    • 看看我的答案 -> 接近评级有一个白色的勾号。只需按下它,它就会变成绿色。这就是接受答案的方式:D
    猜你喜欢
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2016-10-09
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多