2016-05-06 10 views
0

Ich versuche, Bilder in meine Datenbank hochzuladen, so dass ich hierfür eine Tabelle wie folgt erstellt.Image (BLOB) nicht perfekt speichern Bilder in der Datenbank

enter image description here

Und das unter PHP-Code unter Verwendung der Bilder auf der gleichen Seite zum Hochladen und zeigt.

<?php 
// Connection To Database 
$host = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "my_db"; 
$connection = mysqli_connect($host,$username,$password,$dbname); 
if (!$connection) 
{ 
die('Could Not Connect To Database: ' . mysqli_connect_error()); 
} 
mysqli_query($connection, "SET NAMES utf8"); 

// Garb User Account Details 
$garb = mysqli_query($connection, "SELECT * FROM my_table"); 
if(!$garb){ 
$error = "<div class='error'>There's Little Problem: ".mysql_error()."</div>"; 
} else { 
//Showing The User Data 
while($row = mysqli_fetch_array($garb)) { 
    $A_Id = $row['A_Id']; 
    $A_ProfilePic = $row['A_ProfilePic']; 
} 


// Getting Image 
$A_ProfilePic = addslashes(file_get_contents($_FILES['A_ProfilePic']['tmp_name'])); //SQL Injection defence! 
$A_ProfilePic = mysqli_real_escape_string($connection, $A_ProfilePic); 


//Everything Is Okay So Let's Register This User 
$update = mysqli_query($connection, "UPDATE accounts SET A_ProfilePic='$A_ProfilePic' WHERE A_Id='999999'"); 
if(!$update){ 
$updateerror = "<div class='error'>There's Little Problem: ".mysql_error()."</div>"; 
} else { 
//Confirming Message To User 
$error = "<div class='success'>Your Pic Is Updated.</div><br/>"; 
} 
?> 

/* Getting Image */ 
<?php echo '<img class="profileAvatar" alt="" title="" src="data:image/jpeg;base64,'.base64_encode($A_ProfilePic).'"/>';?> 
<form action="" method="post" enctype="multipart/form-data"> 
<input type="file" name="A_ProfilePic" id="A_ProfilePic"/> 
<input type="submit" name="submit" value="Update Your Setting"></input> 
<input type="reset" name="reset" value="Reset Form"></input> 
</form> 

Aber ich erhalte den Fehler als wenn mein Base64-Code das Bild eingefügt dann perfekt nicht eingeführt ist, warum beim Abrufen von Bildern nicht in der Lage sind, es zu sehen. Ich konvertierte das gleiche Bild vom Online-Base64-Konverter und bekam dann einen anderen Code als meinen Datenbankcode. Also was ist der Fehler ... ???

+1

Sie müssen doppelt mit 'addslashes()' und dann 'mysqli_real_escape_string() 'entkommen. Verwenden Sie einfach eine vorbereitete Aussage und hören Sie damit auf. – AbraCadaver

+0

Ich habe auch versucht, aber funktioniert nicht ... –

+0

Die, die eingefügt werden, sind bereits mit Doppel-Escapes vermasselt und wenn Sie es vor der Anzeige entkommen, wird es nicht correct. – AbraCadaver

Antwort

0

Schließlich habe ich es funktioniert mit den folgenden Codes, die fast die gleichen wie oben ist, aber einige Änderungen haben. Jetzt bin ich in der Lage, das Bild während der Laufzeit auf einer einzelnen Seite zu ändern und anzuzeigen.

<?php 
// Connection To Database 
$host = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "my_db"; 
$connection = mysqli_connect($host,$username,$password,$dbname); 
if (!$connection) 
{ 
die('Could Not Connect To Database: ' . mysqli_connect_error()); 
} 
mysqli_query($connection, "SET NAMES utf8"); 

// Garb User Account Details 
$garb = mysqli_query($connection, "SELECT * FROM my_table"); 
if(!$garb){ 
$error = "<div class='error'>There's Little Problem: ".mysql_error()."</div>"; 
} else { 
//Showing The User Data 
while($row = mysqli_fetch_array($garb)) { 
    $A_Id = $row['A_Id']; 
    $A_ProfilePic = $row['A_ProfilePic']; 
} 

// Update Image In Database 
if (isset($_POST['A_ProfilePic'])){ 
// Getting Image 
$A_ProfilePic_Add = mysqli_real_escape_string($connection, $A_ProfilePic); 
//Everything Is Okay So Let's Register This User 
$update = mysqli_query($connection, "UPDATE accounts SET A_ProfilePic='$A_ProfilePic_Add' WHERE A_Id='999999'"); 
if(!$update){ 
$updateerror = "<div class='error'>There's Little Problem: ".mysql_error()."</div>"; 
} else { 
//Confirming Message To User 
$error = "<div class='success'>Your Pic Is Updated.</div><br/>"; 
} 
header("Refresh:0"); 
} 
?> 

/* Getting Image */ 
<?php echo '<img class="profileAvatar" alt="" title="" src="data:image/jpeg;base64,'.base64_encode($A_ProfilePic).'"/>';?> 
<form action="" method="post" enctype="multipart/form-data"> 
<input type="file" name="A_ProfilePic" id="A_ProfilePic"/> 
<input type="submit" name="submit" value="Update Your Setting"></input> 
<input type="reset" name="reset" value="Reset Form"></input> 
</form> 
Verwandte Themen