2014-09-30 25 views
-1

我開始編程PHP。直到我享受,但現在事情仍然有點困惑。如何在mysql中搜索顯示圖像

我可以記錄和顯示來自數據庫的圖像。但是,我試圖通過下拉菜單進行搜索,但我無法顯示任何內容。

你能幫我說我哪裏不合適嗎?

如果在test2.php中我搜索數據庫的最後一條記錄,我可以看到圖像。但是,如果我嘗試鑽取我選擇的ID不再有效。

對於給您帶來的不便,我們深表歉意。

非常感謝大家。


 <!DOCTYPE html> 
    <html> 
    <head> 
    <meta charset="utf-8"> 

    </head> 
    <?php 
    include('config.php'); 
    $query_parent = mysql_query("SELECT idTask from Tasks") or die("Query failed: ".mysql_error()); 
    ?> 
    <body style="background-color:#A4A4A4;"> 
    <?php 
    if(isset($_POST['search'])) 
    { 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = '*****'; 
    $conn = mysql_connect($dbhost, $dbuser, $dbpass); 
    if(! $conn) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 

    $idTask = $_POST['idTask']; 
$_POST['idTask'] = ctype_digit((string) $_POST['idTask']) ? (int) $_POST['idTask'] : 0; 
$_GET['idTask'] = ctype_digit((string) $_GET['idTask']) ? (int) $_GET['idTask'] : 0; 
    echo"<img src='test2.php?image=". $_POST['idTask'] ."'>"; 
    if (!isset($_FILES["image"]["tmp_name"])) 
       echo ""; 
      else{ 
       $image= addslashes(file_get_contents($_FILES["image"]["tmp_name"])); 
       $image_name = addslashes($_FILES['image']['tmp_name']); 
       $image_size = getimagesize($_FILES['image']['tmp_name']); 

      if($image_size==FALSE) 
       echo "That's not an image"; 
      else{ 
       mysql_query("select * from tasks where idTask = '". $_POST['idTask'] ."'"); 

       echo"<img src='test2.php?image=". $_POST['idTask'] ."'>"; 

      } 

      } 


    mysql_close($conn); 
    } 
    else 
    { 
    ?> 

test2.php

<?php 

mysql_connect("localhost", "root", "*****") or die (mysql_error()); 
mysql_select_db('Database') or die (mysql_error()); 

$result= mysql_query("select * from tasks where idTask = ". $_GET['idTask']); 

if(mysql_num_rows($result)) { 
    //No image found... 

} else { 
    $row = mysql_fetch_assoc($result); 
    $image = $row['image']; 
    header("Content-type:image/jpeg"); 
    echo $image; 
} 
?> 

當我做了搜索,出現空白頁面。

enter image description here

+0

**警告**您正在使用不推薦使用的數據庫API。 &你也開放SQL注入 – 2014-09-30 09:15:19

+0

我知道。我在學習PHP。此頁面用於測試...但非常感謝您的回覆, – rpirez 2014-09-30 09:16:36

回答

1

您已經犯了一些錯誤,主要是與數組索引的名字。

  • 你的mysql查詢使用ididTask,它從來沒有一個值。 (這兩個文件)

mysql_query("select * from tasks where idTask = '". $_POST['idTask'] ."'"); 
  • $idTask從空格的鍵獲取其價值,但你的形式不與中有空格提交的任何名稱。

$idTask = $_POST['idTask']; 
  • 我會重做圖像調用是類似於以下,分別編輯test2.php(使用GET而不是POST

echo"<img src='test2.php?image=". $_POST['idTask'] ."'>"; 
  • 不需要whiletest2.php。如果採用前一點,改變你的整個文件變得像

<?php 

mysql_connect("localhost", "root", "*****") or die(mysql_error()); 
mysql_select_db('Database') or die(mysql_error()); 

$result = mysql_query("select * from tasks where idTask = ". $_GET['idTask']); 

if(mysql_num_rows($result)) { 
    //No image found... 

} else { 
    $row = mysql_fetch_assoc($result); 
    $image = $row['image']; 
    header("Content-type:image/jpeg"); 
    echo $image; 
} 
?> 
  • 我會用一個簡單的檢查

保護您 $_GET/ $_POST
$_POST['idTask'] = ctype_digit((string) $_POST['idTask']) ? (int) $_POST['idTask'] : 0; 
$_GET['idTask'] = ctype_digit((string) $_GET['idTask']) ? (int) $_GET['idTask'] : 0; 
  • 我會編碼圖像,然後用base64_encode()插入到數據庫中。然後,在test2.php使用;

$row = mysql_fetch_assoc($result); 
$image = base64_decode($row['image']); 
header("Content-type:image/jpeg"); 
echo $image; 
+0

感謝您的回覆。我做了你說的改變。但是不是門坎:S – rpirez 2014-09-30 09:34:49

+0

@rpirez'$ row ['image']'的內容是什麼? – 2014-09-30 09:36:10

+0

是一個圖像。 Mysql數據庫中的Blob類型。 如果我這樣做「select * from idtask ='201400040'」這是行得通的。但是,如果我想在下拉菜單中進行搜索,則不起作用:S – rpirez 2014-09-30 09:38:22

0

試試這個代碼用ajax它可以幫助你。 這是從數據庫中檢索英雄名稱到下拉列表。

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("hero"); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script> 
function showdetails(str) 
{ 
var xmlhttp; 
if (str==0) 
    { 
alert("please select an hero"); 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("showresult").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","details.php?id="+str,true); 
xmlhttp.send(); 
} 
</script> 
</head> 

<body> 
Hero Name:<select name="id" id="id" onchange="showdetails(this.value)"> 
       <option value="0">Select Hero Name</option> 
       <?php 

       $sql="select id,name from herophoto"; 
       $qry=mysql_query($sql); 
       $num=mysql_num_rows($qry); 
       if($num>0) 
       { 
        while($res=mysql_fetch_array($qry)) 
       { 
       ?> 
       <option value="<?php echo $res['id'];?>"><?php echo $res["name"];?></option> 
       <?php 
       } 
       } 
       ?> 
      </select> 
      <div id="showresult" align="justify"></div> 
</body> 
</html> 

這裏是details.php它向你顯示你從下拉列表中選擇的圖像。

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("hero"); 
$id = $_REQUEST["id"]; 
$sql="select * from herophoto where id='$id'"; 
$qry=mysql_query($sql); 
$num=mysql_num_rows($qry); 
if($num>0) 
{ 
    while($res=mysql_fetch_array($qry)) 
    { 
?> 
<img src="photo/<?php echo $res['photo'];?>" height="300" width="300"/> 
<?php 
    } 
} 
?> 
+0

感謝您的回覆。我嘗試你給我的代碼,但給我一個錯誤。不要顯示圖像。顯示多個字符。 0K $EikpgdbdP4ŸE#,TC :4HYA_I_ |s'0ϥ「_(H,W#PG %, 〜「 5 ʓn _ B/ we =O M k韲韲 ) ?S} + bé;PżEas} JQ \ Y1 /Ѱ-$ܮ – rpirez 2014-09-30 09:48:52

相關問題