Php 在mysql搜索的HTML表中显示图像

Php 在mysql搜索的HTML表中显示图像,php,html,mysql,Php,Html,Mysql,我正试图创建一个网页,展示过去汽车拉力赛的参赛者。这是迄今为止搜索“barry”作为名字的结果 我想添加汽车的缩略图。此时,图像作为blob存储在数据库中。 如何编写此代码以显示图像 代码到目前为止。csvsearch.html 搜索 专栏: 司机优先 导航优先 汽车 csvtable.php <?php $search = $_POST['search']; $column = $_POST['column']; $servername = "localhost&q

我正试图创建一个网页,展示过去汽车拉力赛的参赛者。这是迄今为止搜索“barry”作为名字的结果

我想添加汽车的缩略图。此时,图像作为blob存储在数据库中。 如何编写此代码以显示图像

代码到目前为止。csvsearch.html


搜索
专栏: 司机优先 导航优先 汽车
csvtable.php

<?php

$search = $_POST['search'];
$column = $_POST['column'];

$servername = "localhost";
$username = "root";
$password = "";
$db = "csv_db";

$conn = new mysqli($servername, $username, $password, $db);

if ($conn->connect_error){
    die("Connection failed: ". $conn->connect_error);
}

$sql = "SELECT * FROM competitors WHERE $column like '%$search%'";

if($result = mysqli_query($conn, $sql)){
    if(mysqli_num_rows($result) > 0){

         echo "<table border='1' cellspacing='0' cellpadding='10'>";
            echo "<tr>";
                echo "<th>Driver</th>";
                echo "<th>Co-Driver</th>";
                echo "<th>Comp #</th>";
                echo "<th>Category</th>";               
                echo "<th>Car</th>";
                echo "<th>Event</th>";      
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['DriverFirstName'] .' '. $row['DriverLastName'] . "</td>";
                echo "<td>" . $row['NavFirstName'] . ' '. $row['NavLastName'] ."</td>";                 
                echo "<td align='center'>" . $row['CompNumber'] . "</td>";
                echo "<td>" . $row['Category'] . "</td>";
                echo "<td>" . $row['CarYear'] .' ' . $row['Car'] .' '. $row['Model'] ."</td>";
                echo "<td>" . $row['Event'] .' ' . $row['EventYear'] ."</td>";          
            echo "</tr>";
        }
        echo "</table>";
        // Close result set
        mysqli_free_result($result);
    } else{
        echo "No records matching your query were found.";
    }
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
}
 
// Close connection
$conn->close();
// code from 
?>

有什么想法吗。。。。即使我不得不重新开始,走另一条路。

一些提示

要将二进制文件作为图像发送,您必须发送具有正确mime类型的响应头

   <?php
     header("Content-type: " . image_type_to_mime_type(IMAGETYPE_PNG));
   ?>

有关选项,请参阅

您将需要该mime类型作为数据库中的表字段

这是我过去用来传输blob图像的一些php代码

   <?php
       require_once "db.php";
       if(isset($_GET['image_id'])) {
        $sql = "SELECT imageType,imageData FROM output_images WHERE imageId=" . $_GET['image_id'];
        $result = mysqli_query($conn, $sql) or die("<b>Error:</b> Problem on Retrieving Image BLOB<br/>" . mysqli_error($conn));
        $row = mysqli_fetch_array($result);
        header("Content-type: " . $row["imageType"]);
        echo $row["imageData"];
       }
       mysqli_close($conn);
     ?>

我从中得到的消息来源是


顺便说一下。。您是否考虑过不在数据库中使用blob,只需发布一个指向该图像的链接,如将图像存储在服务器端的somepath\磁盘上?

在您来询问之前,请先做一些基础研究。这不是一个简单地问“怎么做”的地方,然后期望我们给你一个完整的教程。“即使我必须重新开始走另一条路”-将二进制图像数据填充到数据库中,在大多数情况下,一开始就没有多大意义。除非有非常具体的原因,否则大型(二进制)资产属于文件系统,只有可用于访问它们的文件系统路径属于数据库。警告:您完全可以使用参数化的预处理语句,并且应该使用参数化预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。警告:您完全可以使用参数化的预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。使用
die(mysqli_error($conn))是一个非常糟糕的主意
在您的代码中,因为它可能会泄漏敏感信息。有关更多解释,请参阅此帖子:@Dharman我已经读了两遍你的警告。。但是你能不能提供一些使用Php和MySQL的代码,这些代码不容易被注入?我还想从这一点上看一个SQL注入的例子,它可能会做一些意想不到的事情。请记住,我们所看到的数据库不允许语法扩展选择,也不允许从WHERE条件中的某个位置开始更新数据库,即imageId=“.$\u GET['image\u id']替换“image id”“这可能会造成一些麻烦……我不确定我是否理解你的评论,但是如果你想学习如何在SQL中正确地包含PHP变量,那么我建议你阅读相关书籍和教程,如果你遵循正确的绑定参数的方法,那么就很容易编写不受SQL注入影响的代码。