【问题标题】:Trying to see image upload after insert - php mySQL插入后尝试查看图像上传 - php mySQL
【发布时间】:2012-05-09 01:24:18
【问题描述】:

我正在学习如何上传带有插页的照片。到目前为止,我已将图像上传到“照片”文件夹。这样可行。我创建了一个名为“image”的 blob 字段。

我应该看到 blob 字段中的路径还是实际照片?困惑。

http://jsfiddle.net/zEZD7/

<?
$order = "INSERT INTO reg_add (connect_date, 
   reg, 
   first_name, 
   last_name,
   image)

VALUES

('$_POST[connect_date]', 
     '{$_POST[reg]}nv', 
     '$_POST[first_name]', 
     '$_POST[last_name]',
     '$_POST[image]')";

$new_image = 'photos/'.basename( $_FILES['image']['name']);
    if(move_uploaded_file($_FILES['image']['tmp_name'], $new_image)) {
        // The images was uploaded
  } else{
header("location: reg_add_fail_IMAGE.php"); 
}

$sql = "INSERT INTO image (path) VALUES ('" . mysql_real_escape_string($path) . "')";

$result = mysql_query($order);
?>

表格:

<form id="form_register" method="POST" action="reg_add.php">

   <input class="req-string bx short" type="text" name="connect_date" id="connect_date">
   <input type="hidden" name="MAX_FILE_SIZE" value="100000">
   <input class="req-string bx long caps" type="text" name="reg" id="reg">
   <input class="req-string bx long" type="text" name="first_name">
   <input class="bx long" type="text" name="last_name">

   Choose a image to upload: <input name="image" type="file">
   <input id="rbSubmit" class="rb2 rbSubmit" type="submit" value="submit">
</form>

【问题讨论】:

  • 无论哪种方式都可以,本网站上有很多问题在权衡每种方法的优缺点。
  • 在phpMyAdmin的浏览器中可以看到图片吗?或者我可以显示链接吗?
  • 如果您想将链接放入数据库中(我会推荐),您必须将其添加到您的INSERT 语句中(即在@987654326 之前将列名添加到列表中@ 关键字和列表中VALUES 关键字之后的相应位置的图像路径):字符串类型的列(例如VARCHAR)比BLOB 更适合此目的。如果您想将图像本身存储在BLOB 中(这是可能的,但我不推荐),那么您必须使用图像文件的内容作为要插入的值来执行类似的操作。跨度>
  • 顺便说一句,您的代码容易受到 SQL 注入的攻击。您真的应该使用准备好的语句,您将变量作为参数传递到其中,这些参数不会针对 SQL 进行评估。如果你不知道我在说什么,或者如何解决它,请阅读Bobby Tables 的故事。
  • 我最终会使用准备好的语句。现在我正在尝试了解上传的基础知识。

标签: php mysql image upload insert


【解决方案1】:

我认为您想要一个表单并让用户填写一些详细信息并上传图片,然后将其显示回来?

如果是这样,我不会将图像存储在 MySQl 中。我会将图像上传到服务器的文件系统,位于 WWW 根(浏览器可访问的目录)之外的某个位置,并将 图像的路径 文件存储在 char 列中。

当您想要显示它时,只需打印一个标签,其中包含从您的数据库查询中获取的图像来源。

另外,您的代码似乎暗示您正在接受用户输入并将其直接添加到数据库中,从安全角度来看,这非常糟糕。您需要先进行输入验证(google that 和 SQL 注入攻击)

【讨论】:

  • 对不起,我不熟悉 jsfiddle.net,不确定我在看什么。如果到时候还没整理好我可以在周一发一些示例代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 2016-08-17
相关资源
最近更新 更多