在php表中显示数据库中的图像

在php表中显示数据库中的图像,php,mysql,Php,Mysql,我有一个简单的表单,有人填写,然后另一个表单运行查询检索数据 我一直在考虑在表单中包含一个上传的图像,然后让表格显示包含该图像的表单数据 这是我的一些代码 if ($_SERVER['REQUEST_METHOD'] == 'POST'){ $uname = $_POST['username']; $password = $_POST['password']; $uname = htmlspecialchars($uname); $password = htm

我有一个简单的表单,有人填写,然后另一个表单运行查询检索数据

我一直在考虑在表单中包含一个上传的图像,然后让表格显示包含该图像的表单数据

这是我的一些代码

 if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    $uname = $_POST['username'];
    $password = $_POST['password'];

    $uname = htmlspecialchars($uname);
    $password = htmlspecialchars($password);

    //==========================================
    //  CONNECT TO THE LOCAL DATABASE
    //==========================================
    $user_name = "xxxxxx";
    $pass_word = "xxxxxx";
    $database = "xxxxx";
    $server = "xxxxxx";

    $db_handle = mysql_connect($server, $user_name, $pass_word);
    $db_found = mysql_select_db($database, $db_handle);

    if ($db_found) {



        $SQL = "SELECT * FROM students WHERE L1 = '$uname' AND L2 = '" .md5 ($_POST['password'])."'";
        $result = mysql_query($SQL);
        $num_rows = mysql_num_rows($result);

    //====================================================
    //  CHECK TO SEE IF THE $result VARIABLE IS TRUE
    //====================================================

        if ($result) {
            if ($num_rows > 0) {
                $color="1";


$result = mysql_query("SELECT * FROM entry, students   WHERE entry.studentName = students.studentName AND students.L1='$uname' ") 
or die(mysql_error());  

echo "<p>You records as of ";
echo date('l jS \of F Y h:i:s A');
echo "<table border='1' cellpadding='2' cellspacing='0'>";
echo "<tr> <th>Date</th><th>Student Name</th> <th>Tutor name</th> <th>Procedure name</th> <th>Grade</th><th>Student Reflection</th><th>Tutor Comments</th><th>Professionalism</th> <th>Communication</th> <th>Alert</th> <th>Dispute</th><th>Username</th> <th>Image</th></tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {

if($color==1){
echo "<tr bgcolor= >
<td>".$row['date']."</td><td>".$row['studentName']."</td><td>".$row['tutorName']."</td><td>".$row['procedureName']."</td><td>".$row['grade']."</td><td>".$row['studentReflection']."</td><td>".$row['tutorComments']."</td><td>".$row['professionalism']."</td><td>".$row['communication']."</td><td>".$row['alert']."</td><td>".$row['dispute']."<td>".$row['L1']."</td></td>
<td><img src='images/".$row['studentImage']."'></td>;


</tr>";

// Set $color==2, for switching to other color
$color="2";
}

// When $color not equal 1, use this table row color
else {
echo "<tr bgcolor='#4eb557'>
<td>".$row['date']."</td><td>".$row['studentName']."</td><td>".$row['tutorName']."</td><td>".$row['procedureName']."</td><td>".$row['grade']."</td><td>".$row['studentReflection']."</td><td>".$row['tutorComments']."</td><td>".$row['professionalism']."</td><td>".$row['communication']."</td><td>".$row['alert']."</td><td>".$row['dispute']."<td>".$row['L1']."</td></td>
<td><img src='images/".$row['studentImage']."'></td>;
</tr>";
// Set $color back to 1
$color="1";
}

}
echo '</table>';
if($\u服务器['REQUEST\u METHOD']=='POST'){
$uname=$_POST['username'];
$password=$_POST['password'];
$uname=htmlspecialchars($uname);
$password=htmlspecialchars($password);
//==========================================
//连接到本地数据库
//==========================================
$user_name=“xxxxxx”;
$pass_word=“xxxxxx”;
$database=“xxxxx”;
$server=“xxxxxx”;
$db\u handle=mysql\u connect($server、$user\u name、$pass\u word);
$db\u found=mysql\u select\u db($database,$db\u handle);
如果($db_){
$SQL=“从L1='$uname'和L2='”的学生中选择*。.md5($\u POST['password'])。”;
$result=mysql\u查询($SQL);
$num\u rows=mysql\u num\u rows($result);
//====================================================
//检查$result变量是否为TRUE
//====================================================
如果($结果){
如果($num_rows>0){
$color=“1”;
$result=mysql_查询(“从条目中选择*,其中entry.studentName=students.studentName和students.L1=”$uname'))
或者死(mysql_error());
echo“您记录的截止日期”;
回音日期('l jS\of F Y h:i:sa');
回声“;
echo“日期学生姓名导师姓名过程姓名成绩学生反思教师评论专业交流警报DisputeUsername图像”;
//一直排到下一排,直到没有更多的东西了
while($row=mysql\u fetch\u数组($result)){
如果($color==1){
回声“
“$row['date']。”“$row['studentName']。”“$row['tutorName']。$row['procedureName']。”“$row['grade']。”“$row['studentReflection']。$row['tutorComments']。$row['professionalization']。$row['communication']。$row['alert']。$row['deference']。$row['L1']
;
";
//设置$color==2,用于切换到其他颜色
$color=“2”;
}
//当$color不等于1时,请使用此表格行颜色
否则{
回声“
“$row['date']。”“$row['studentName']。”“$row['tutorName']。$row['procedureName']。”“$row['grade']。”“$row['studentReflection']。$row['tutorComments']。$row['professionalization']。$row['communication']。$row['alert']。$row['deference']。$row['L1']
;
";
//将$color设置回1
$color=“1”;
}
}
回声';
当结果出来时,我已经获取了除了图像之外的所有数据,图像只是显示为一堆字符


我哪里出错了?

你的表格上有这个吗

enctype=multipart/form-data
在其中?如果没有,您将无法将图像作为文件上载。
确保您的表单至少如下所示:

<form method="post" action="URL_THINGY" enctype=multipart/form-data>
     (The rest of your form here)
<form>

(表格的其余部分在这里)

如果您将图像内容存储在数据库中,然后使用PHP进行显示,您应该做两件事:

  • 在将数据存储到数据库之前,请先进行base64编码,这样数据就不会包含奇怪/错误的字符
  • 显示图像时,在php中回显它们,并将文件头设置为图像:
  • 标题('Content-Type:image/png');
    但是,正如一些人已经说过的,最好是
    为图像生成一个随机名称,将其存储在文件夹中,然后仅将图像路径存储在数据库中。

    由于您需要将图像存储在数据库中,因此对于有同样问题的人,这里有一个建议。

    您应该将图像作为文件上传并存储路径将图像数据存储在数据库中。您是将图像数据存储在数据库中还是存储到实际图像的路径中?我尝试了两种方法,但两种方法都不起作用。因此,我将尝试通过将图像存储在数据库中使其起作用。决不将图像直接存储在数据库中。始终将图像存储在文件夹中,并将图像路径存储在数据库中。一次你已经这样做了,检查“studentImage”字段中存储的内容。然后将该链接放到浏览器中,看看你是否看到该图像。让我们知道发生了什么。我不需要将它们存储在数据库中,但我认为这将是一个更简单的选择。我的意思是,既然你已经存储了它们,该链接将向你展示如何正确地从数据库中检索它们更好的解决方案是将它们存储在文件系统中,只将路径存储在数据库中。 header('Content-Type: image/png');