【问题标题】:Image not uploading to database图片未上传到数据库
【发布时间】:2018-06-27 07:14:48
【问题描述】:

我创建了一个带有表单的 php 脚本,它应该向数据库中插入一些数据,它实际上添加了文本和 ID,但它没有添加文件。

数据库如下所示:

数据库名称:highmob_comenzi 桌名:玩家 在表中,我们得到 3 行: ID(自动增量) 名称(我们从表单中插入的名称) schite(应该上传文件的位置)类型:blob 排序:无,全部无

这是我目前尝试过的脚本

 <?php
 include('connect-db.php');
 ?>
 <?php
 function renderForm($name, $schita, $error)
 {
 ?>

 <?php
 if ($error != '')
 {
 echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
 }
 ?>
  <form action="" method="post" enctype="multipart/form-data" >
  <input type="hidden" name="id" value="<?php echo $id; ?>"/>
  <input type="hidden" name="name" value="<?php echo $name; ?>"/>
  <input type="file" id="schita" name="schita" >
  <button type="submit" name="submit">Add Data</button>
  </form>
 <?php
 }
 include('connect-db.php');
 if (isset($_POST['submit']))
 {
 $name = mysql_real_escape_string(htmlspecialchars($_POST['name']));
 $schita = mysql_real_escape_string(htmlspecialchars($_POST['schita']));
 if ($name == '')
 {
 $error = 'Error !!';
 renderForm($name, $schita, $error);
 }
 else
 {
 mysql_query("INSERT players SET name='$name', schita='$schita'")
 or die(mysql_error());
 header("Location: mobila.php");
 }
 }
 else
 {
 renderForm('','','','','');
 }
 ?>

当我们在表单中插入数据时,此脚本会为每个 ID 创建一个页面 喜欢 pagename.php?id=4

我希望在他创建页面后填写表格时打开页面以仅在该页面上查看上传的文件,

知道为什么它不起作用吗?

【问题讨论】:

  • 尝试搜索如何使用php上传文件?请不要偷懒
  • 处理上传的文件处理代码在哪里?
  • 我在网上搜索过,我看到数据库应该是blob,处理上传的文件不是sql.query insert player set schita=$schita ?
  • 如果我使用你在这里发送的教程,我已经在表格中有一个 ID 行,这个 tut 告诉我添加另一个,这是不可能的,我使用的 php 脚本他已经创建使用 id 增量的页面

标签: php mysql blob


【解决方案1】:

使用$_FILES获取请求文件,还需要确认你的mysql字段(schita)是blob类型

【讨论】:

  • MySQL 字段是一个 blob,我已经检查过了,关于 $_FILES 请求我不知道如何插入它!
  • 欢迎来到 Stack Overflow!虽然这可能是解决问题的一个有价值的提示,但一个好的答案也可以证明解决方案。请edit 提供示例代码来说明您的意思。或者,考虑将其写为评论。
【解决方案2】:

您需要更正插入查询。您缺少“进入”关键字。将查询更改为:

mysql_query("INSERT into players SET name='$name', schita='$schita'");

【讨论】:

    【解决方案3】:

    您需要将图片转换为base64,然后保存到数据库中。

    // Select file type
      $target_file = basename($_FILES["file"]["name"]); 
      $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    
      // Convert to base64 
      $image_base64 = base64_encode(file_get_contents($_FILES['schita']['tmp_name']) );
      $image = 'data:image/'.$imageFileType.';base64,'.$image_base64;
    
      // Insert record
      $query = "INSERT into players(schita) values('".$image."')";
      mysqli_query($con,$query);
    

    【讨论】:

      【解决方案4】:

      我已设法使用此脚本上传文件

       <?php
       $dbh = new PDO("mysql:host=localhost;dbname=highmob_comenzi", "highmob", "PW");
       if(isset($_POST['btns'])){
           $name = $_FILES['myfile']['name'];
           $type = $_FILES['myfile']['type'];
           $data = file_get_contents($_FILES['myfile']['tmp_name']);
           $stmt = $dbh->prepare("UPDATE players SET data='$myfile', name='$name', mime='$type' WHERE id='$id'");
           $stmt->bindParam(1,$name);
           $stmt->bindParam(2,$type);
           $stmt->bindParam(3,$data);
           $stmt->execute();
       }
       ?>
       <!-- form -->
       <form method="post" enctype="multipart/form-data">
       <input type="file" name="myfile"/>
       <button name="btns"> Incarca Schita </button>
       </form>
       <!-- display data -->
       <?php
       $stat = $dbh->prepare("select * from players");
       $stat->execute();
       while($row = $stat->fetch()){
           echo "<a target='_blank' href='viewschita.php?id=".$row['id']."'>".$row['name']."</a>";
       }
      
       ?>
      

      问题是我不知道如何创建文件的链接,知道怎么做吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-07
        相关资源
        最近更新 更多