dongli8862 2014-04-19 09:27
浏览 38
已采纳

使用PDO上传图像时遇到麻烦

I'm having some problems with the upload of image. I want to store and retrieve image from the table, but when I try to get the image, it doesn't show. There is only broken image's icon. However, if I upload image manually by phpmyadmin, it shows the image. My table row's type is blob. I'm totally confused. Can anyone help please.

My code is simple:

$pdo = new PDO('mysql:dbname=database_name;host=localhost', 'username', 'password',
                array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

              $imageName = mysql_real_escape_string($_FILES["image"]["name"]);
              $imageData = addslashes(file_get_contents($_FILES["image"]["tmp_name"]));
              $imageType = mysql_real_escape_string($_FILES["image"]["type"]);

              $stmt = $pdo->prepare('INSERT INTO image (name,image) VALUES (:name,:image)');
              $stmt->execute(array('name' => $imageName, 'image' => $imageData));
              echo "Image Uploaded";


              $res = mysql_query("SELECT * FROM image "); 
              while ($row = mysql_fetch_assoc($res)) 
              {                                                  
                echo "<img src=data:image/jpeg;base64," . (base64_encode(($row['image']))) . " style='width:60px;height:60px;'>";
              }
  • 写回答

1条回答 默认 最新

  • drz5553 2014-04-19 09:33
    关注

    Try to delete validation, you use prepaired statement, you don't need it.

                  $pdo = new PDO('mysql:dbname=database_name;host=localhost', 'username', 'password',
                    array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
    
                  $imageName = $_FILES["image"]["name"];
                  $imageData = file_get_contents($_FILES["image"]["tmp_name"]);
                  $imageType = $_FILES["image"]["type"];
    
                  $stmt = $pdo->prepare('INSERT INTO image (name,image) VALUES (:name,:image)');
                  $stmt->execute(array('name' => $imageName, 'image' => $imageData));
                  echo "Image Uploaded";
    
    
                  $res = mysql_query("SELECT * FROM image "); 
                  while ($row = mysql_fetch_assoc($res)) 
                  {                                                  
                    echo "<img src=data:image/jpeg;base64," . (base64_encode(($row['image']))) . " style='width:60px;height:60px;'>";
                  }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致