将图像插入MySQL数据库

时间:2013-08-01 23:03:59

标签: php mysql database

我正在开发一个解决方案,帮助我将图像列表中的特定图像提交到MySQL数据库。

我的数据库包含以下内容:

数据库

  • ID(INT)
  • 照片(BLOB)
  • 字幕(VAR)

代码

我首先从列表中检索图像并为每个图像提供一个提交按钮。

foreach ($media->data as $data) {
  echo $pictureImage = "<img src=\"{$data->images->thumbnail->url}\">";
  echo "<form action='tag.php' method='post'>";
  echo "<input type='submit' name='submit' value='Click Me'>";  
  echo "</form>";
}

$ pictureImage解析数据URL,然后将其放入实际图像中。 提交按钮位于每个图像下方。

我正在制作它,以便在按下提交按钮时,它会被添加到数据库中。

if(isset($_POST['submit'])) {
  //Database code would be above the following
  $sql="INSERT INTO $usertable (image) VALUES ('$pictureImage')";
}

问题

我遇到的问题是列表中的最后一个图像是提交到数据库的图像,而不是带有相应提交按钮的图像。如何使用相应的提交按钮抓取照片?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

当您点击提交按钮时,您不会发布任何数据。我建议您对每个表单都有一个带有图像网址的隐藏字段。 像这样的东西:

<form action='tag.php' method='post'>
<input type="hidden" value="{$data->images->thumbnail->url}" name="pic"/>
<input type='submit' name='submit' value='Click Me'>
</form>

答案 1 :(得分:1)

您需要在表单中包含图片的任何标识符才能存储。

例如,您可以尝试构建这样的表单:

foreach ($media->data as $data) {
  echo $pictureImage = "<img src=\"{$data->images->thumbnail->url}\">";
  echo "<form action='tag.php' method='post'>";
  echo "<input type='hidden' name='imageid' value='{$data->images->thumbnail->url}'>";
  echo "<input type='submit' name='submit' value='Click Me'>";  
  echo "</form>";
}

当您想要将图像存储在表单提交时,您实际上可以获取图像的标识符(在这种情况下,我使用了您发布的URL):

if(isset($_POST['submit'])) {
  $sql="INSERT INTO $usertable (image) VALUES ('$_POST[imageid]')";
}

答案 2 :(得分:1)

问题

foreach ($media->data as $data) {
   echo $pictureImage = "<img src=\"{$data->images->thumbnail->url}\">";
   echo "<form action='tag.php' method='post'>";
   echo "<input type='submit' name='submit' value='Click Me'>";  
   echo "</form>";
}

当这个循环完成时,你将循环中的最后一个图像作为$ pictureImage的值。

所以当它达到这一点时,你就是$ pictureImage仍然是......最后一张图片。

if(isset($_POST['submit'])) {
  //Database code would be above the following
  $sql="INSERT INTO $usertable (image) VALUES ('$pictureImage')";
}

解决方案

我不确定您要保存哪个数据值,因为它现在看起来像整个标记。但不管它是什么,你需要先将它放入表格领域......

foreach ($media->data as $data) {
    ..
    echo "<form action='tag.php' method='post'>";
    echo "<input type='hidden' name='imageurl' value='<img src=\"{$data->images->thumbnail->url}\">' />";
    ..
}

然后在脚本的POST部分中检索它:

if(isset($_POST['submit'])) {
   $imageurl = $_POST['imageurl'];
   //Database code would be above the following
   $sql="INSERT INTO $usertable (image) VALUES ('$imageUrl')";
}

这样,它不会始终是列表中的最后一个值,而是它将是您选择的值。