![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 23.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Napisałem kod do wyświetlania obrazków z sql z pola typu BLOB. Obrazki się zapisują, ale gdy chce odczytać wszystkie zapisane obrazki to wyświetla mi się tylko obrazek z id = 1 i tyle razy ile mam wyników z zapytania. Nie wiem dlaczego nie wyświetla mi pozostałych oobrazków. To co napisałem: Plik index.php w folderze zapisz Kod <html> <head><title>Store binary data into SQL Database</title></head> <body> <form method="post" action="zapisz.php" enctype="multipart/form-data"> File Description:<br> <input type="text" name="form_description" size="40"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <br>File to upload/store in database:<br> <input type="file" name="form_data" size="40"> <p><input type="submit" name="submit" value="submit"> </form> </body> </html> Plik zapisz php w folderze zapisz Kod <?php echo "Zapisywanie do sql"; $plik_tmp = $_FILES['form_data']['tmp_name']; //$plik_nazwa = $_FILES['form_description']['name']; //$plik_rozmiar = $_FILES['MAX_FILE_SIZE']['size']; If($plik_tmp != "none") { $PSize = filesize($plik_tmp); $mysqlPicture = addslashes(fread(fopen($plik_tmp, "r"), $PSize)); $db = mysql_connect( 'localhost', 'root', 'lilly' ); mysql_select_db( 'image' ); $var = 1; mysql_query("INSERT INTO obrazki (Image) VALUES ( '$mysqlPicture')") or die("Can't Perform Query"); } else { echo"You did not upload any picture"; } ?> Plik index.php w folderze odczyt Kod <HTML> <BODY> <?php $db = mysql_connect( 'localhost', 'root', 'lilly' ); mysql_select_db( 'image' ); $result=mysql_query("SELECT * FROM obrazki where PicNum > '0'") or die("Can't Perform Query"); echo mysql_num_rows($result); while($row=mysql_fetch_assoc($result)) { $num = $row['PicNum']; echo $num; echo "<IMG SRC=\"SecondType.php?num='$num'\">"; flush(); } ?> </BODY> </HTML> plik SecondType.php w folderze odczyt Kod <?php
$db = mysql_connect( 'localhost', 'root', 'lilly' ); mysql_select_db( 'image' ) or die("Unable to select database"); $num = $_GET['num']; $result=mysql_query("SELECT * FROM obrazki WHERE PicNum = '$num'") or die("Can't perform Query"); $row=mysql_fetch_assoc($result); Header( "Content-type: image/jpeg"); echo $row['Image']; ?> Ten post edytował maciek_nh 23.10.2009, 21:48:41 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dalego temu do jakiejś poprawności, tym bardziej linkowi do localhosta (IMG:style_emoticons/default/winksmiley.jpg)
WHERE PicNum = '$num'" -- umieszczając wartość w ' oznaczasz ją jako string, a pola auto_increment stosują liczby. Także przyczepiłbym się addslashes na binarnych danych. Poza tym serwowanie grafik z bazy nie jest wydajne. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 23.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zmieniłem $num na bez cudzysłowów i chyba to pomogło. Dzięki :]
Jeśli chodzi o addslashes to czym to zastąpić ? Poza tym co jeszcze jest do zmiany, bo mówisz że daleko temu do poprawności ? Ten post edytował maciek_nh 23.10.2009, 21:50:45 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
PDO ma coś takiego jak "bind value", co zajmuje się wstawianiem danych do SQLki i powinno samo poprawnie obsłużyć takiego dane (a stare API mysql ma też mysql_real_escape_string).
I też zamiast Kod echo "<IMG SRC=\"SecondType.php?num='$num'\">"; można np. ładniej: Kod echo '<img src="SecondType.php?num='.$num.'" alt="" />'; |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 07:04 |