【问题标题】:PHP Insert Multiple image filenamePHP插入多个图像文件名
【发布时间】:2016-01-23 19:38:20
【问题描述】:

我有一个使用 AJAX 图像上传功能的表单,但我希望表单上传图像和缩略图(它做得很好),但是,我希望将该图像文件名写入我的 MySQL 数据库(使用PHP)。

我的测试文件(用于查看上传/组件)位于 http://www.spearman.co.za/admin/stackoverflow.php?id=100 - 我删除了任何 INSERT 子句,因此仅显示上传组件。

我想出了一种将单个图像插入数据库的方法(在我的 INSERT INTO 子句中使用GetSQLValueString($_POST['images4ex'] [0], "text"),),但是,我想知道当有人上传多个图像时如何运行循环。

我尝试使用在这个论坛上看到的 30 个想法/sn-p,但是,我的编码知识不是很好。它上传图像但不将文件写入数据库。

我的数据库表很简单,有 2 个字段: 表名:NEW_extrapropertyimg
字段:图像(用于图像文件名) field: propertyid(这是一个传递的 URL 变量,所以我可以用这个 id 过滤)

我有一个使用 <?php echo $_GET['id']; ?> 的 propertyid 隐藏字段 我的 AJAX 选择框是<div id="images4ex" name="images4ex[]" orakuploader="on" ></div>

看来我需要做一个数组或内爆——我什至不知道如何开始。

任何帮助将不胜感激。

【问题讨论】:

  • 显示您尝试过的代码。
  • 嗨 .. 好吧,我试过了 - 它确实上传和缩略图图像,它也插入到数据库中......但是,它将所有图像文件名放在一行中。 <?php $values = implode("",$_POST[images4ex]); mysql_query("INSERT INTO NEW_extrapropertyimg(image) VALUES('$values')") or die(mysql_error()); echo "Success."; ?> 它插入到数据库'1.jpg2.jpg3.jpg4.jpg' 我不确定如何拆分它,因此它将每个上传的文件插入一个新行,或者如何将propertyid添加到这个。

标签: php jquery mysql ajax upload


【解决方案1】:

如果 $_POST["images4ex"] 包含所有图像名称,并且您想将它们插入数据库中,您可以使用 foreach 循环 $_POST[images4ex] 例如:

<?php
if (isset($_POST["images4ex"])) {
    foreach ($_POST["images4ex"] as $image4ex) {
        // In this loop, the $image4ex should be the image name so you can perform your insert query here.
    }
}
?>

【讨论】:

  • 感谢您 - 我确实尝试了您的建议,但是,它仍然将图像的文件名放在一行中(即:1.jpg2.jpg3.jpg)。有没有办法让每个图像作为新记录/行插入?
  • 您在循环中添加了类似的内容? mysql_query("INSERT INTO NEW_extrapropertyimg(image) VALUES('$image4ex')") or die(mysql_error()); 也许您可以在循环之前检查 $_POST 数组的内容,以确保 'images4ex' 有多个值。可以使用var_dump($_POST);,因为是在做异步调用,所以在firefox firebug net panel或者chrome Network对服务器的http调用中可以看到这个var_dump的输出
  • 谢谢伙计,我一直在我身边玩,使用一些想法,我设法让它将每个图像文件名发送到数据库中,并使用下面的脚本进入新记录。 for ($i = 0, $len = count($_POST['images4ex']); $i &lt; $len; $i++) { $insertSQL = sprintf("INSERT INTO NEW_extrapropertyimg (propertyid, image) VALUES (%s, %s)", GetSQLValueString($_POST['propertyid'][$i], "text"), GetSQLValueString($_POST['images4ex'][$i], "text")); 但是,它只将 URL propertyid 添加到条目的 1 上。知道如何将该变量写入所有条目吗?
  • 我可以看到为什么没有插入 propertyID 值...现在完美地从 GetSQLValueString($_POST['propertyid'][$i], "text"), 函数中删除了 [$i]。你们知道如何提取上传文件的索引值吗?假设我有 10 个文件上传,10 个文件插入到 db .. 你将如何提取每个文件的索引号? 1.jpg - propertyid100 - orderID 1
  • 如果您的意思是如何从“1.jpg”中获取“1”,您可以通过多种方式来实现。 2个例子:如果$photo = "1.jpg";,你可以使用explode$number = explode(".", $photo)[0]; 或者你可以使用 mb_strposmb_substr $position = mb_strpos($photo, ".");$number = mb_substr($photo, 0, $position);
猜你喜欢
  • 2017-06-17
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 2016-08-04
相关资源
最近更新 更多