» »

Branje slik jpg iz MySQL z PHP

Branje slik jpg iz MySQL z PHP

a-ptuj1 ::

Pozdravljeni.

V bazi MySQL imam shranjene 3 jpg slike. Ko jih želim iz nje prebrati mi napiše naslednje opozorilo.
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\wamp\www\slika\prikazi.php on line 14
Če prav razumem naj bi mankal 1 parameter v funkcija mysql_fetch_array(). Ne vem kaj manjka, da bi zadeva delala. Prilagam kodi in lepo prosim za pomoč. Ali pa je napaka kje drugje pa mi samo javlja da je to narobe, ker ne ve kako dalje.

poglej.php
<?php
   require_once("connect.php"); 
			
   $strQuery = "SELECT sid FROM slike";
	$functQuery = mysql_query ( $strQuery );
       
	while ( $arrayPicture = mysql_fetch_array ( $functQuery )){ 
?>
<a href="prikazi.php?sid=<?php echo $arrayPicture['sid'];?>">Slika No. <?php echo $arrayPicture['sid'];?></a><br />
<?php
}
?>

poglej.php mi izpiše
Slika No.1
Slika No.2
Slika No.3

prikazi.php
<?php
  require_once("connect.php");

    if ( !isSet( $_GET['sid'] ) and is_numeric( $_GET['sid'] )){ 
		die();	
	}
				
$strQuery = "SELECT slika_data, slika_type, slika_name FROM slike WHERE sid = " . $_GET['sid'];
	$functQuery = mysql_query ( $strQuery );
       	$arrayPicture = mysql_fetch_array ( $functQuery ); 

     	header("Content-type: " . $arrayPicture['slika_type'] . "\n\r");
                 
      	header("Content-Disposition: inline; filename=" . $arrayPicture['slika_name']  . "\n\r");
         
	echo $arrayPicture['slika_data'];
?>


Ko zaženem zadevo preko poglej.php mi napiše to opozorilo.
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\wamp\www\slika\prikazi.php on line 14

Naj bi mankal 1 parameter v funkcija mysql_fetch_array(). Ne vem kaj manjka.

Prilagam še kodo povezave. A bi morda moral kaj iz nje vpisati v mysql_fetch_array().

connect.php
<?php 
$strMySQLHostname = 'localhost'; 
$strMySQLDatabase = 'slika';   
$strMySQLUsername = ''; 
$strMySQLPassword = '';

$functMySQLConnection = mysql_pconnect( $strMySQLHostname, $strMySQLUsername, $strMySQLPassword )
or die('Napaka pri povezovanju na MySQL strežnik' . mysql_error()); 

$functMySQLDBSelect = mysql_select_db( $strMySQLDatabase, $functMySQLConnection ) 
or die( 'Napaka pri izbiri MySQL baze( ' . $strMySQLDatabase . ' )' . mysql_error());
?>

carota ::

Kaj ti izpiše sledeče?
var_dump($arrayPicture['slika_name']);


Btw:
...WHERE sid = " . $_GET['sid'];

Se zavedaš, da je to zelo slaba praksa zaradi možnih SQL injectionov? Uporabi raje PDO - Why you Should be using PHP's PDO for Database Access.

a-ptuj1 ::

Nič drugega ne izpiše kot samo
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\wamp\www\slika1\prikazi.php on line 14

Pimoz ::

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\wamp\www\slika1\prikazi.php on line 14

Se pravi je pršl do neke napake... ;)

keworkian ::

Tole popravi

$functQuery = mysql_query ( $strQuery,$functMySQLConnection );
Obscenities in B-Flat

Zgodovina sprememb…

techfreak :) ::

Tale link je v bistvu rešitev nekaterih njegovih težav:

carota je izjavil:

Uporabi raje PDO - Why you Should be using PHP's PDO for Database Access.

matonson ::

A je mysqli z vidika varnosti kaj slabši kot PDO?

techfreak :) ::

Kaksnih znanih ranljivosti ni bilo in bi tudi mysql_real_escape_string naj bil dovolj, vendar je vseeno bolj varno ce RDBMS dobi sql stavek ter parametre posebej, kot pa ce jih ti sam vstavis. Pri prepared statements ves da ne bo tezav, ne glede na to kaj mu posljes. Pri escapanju pa ne mores biti popolnoma preprican, poleg tega pa je problem ker lahko kdaj pozabis na to in lahko pride do sql injectiona.

PHP je edini! jezik kjer se sedaj vidim kaksne primere z uporabo escapanja ter mysql_ funkcij, sicer pa zadeva se vseeno velja pri mysqli, saj je mysqli::real_escape_string isto kot uporaba mysql_real_escape_string.

Ce pa sprasujes glede preparated statements pa ni razlika med mysqli in PDO, razen v tem da je pri PDO bolj prenosljiva zadeva. PDO podpira vecino relacijskih baz, in v primeru uporabe preprostih SQL stavkov lahko zadevo brez tezav prenasas med npr. mysql, postgresql ali pa sqlite.

a-ptuj1 ::

Hvala za pomoč. Zadeva z vašo pomočjo sedaj dela v MySQL. Izpiše mi jpg fotograjijo (slika_data), ne izpiše pa mi opisa(slika_name).
Če dam echo $arrayPicture['slika_name'] zraven echo $arrayPicture['slika_data'] ne izpiše nič, če pa samo eno ali druga pa mi izpiše samo tisto, obe pa ne.

A je SQL res tako nevaren za vdore?

techfreak :) ::

A je SQL res tako nevaren za vdore?

Uporabljas mysql_* funkcije, ki so deprecated in se naj ne bi vec uporabljale, prav tako pa escapas string namesto da bi uporabil prepared statements. Definitivno bolj ne-varno kot pa uporaba bolj pravilnih nacinov.

Tukajle imas dva primera kako se shranjuje in pridobiva sliko iz baze preko PDO:
http://www.phpeveryday.com/articles/PDO...
http://blitzphp.blogspot.com/2013/04/st...

a-ptuj1 ::

Sem uporabil DPO iz strani
http://www.phpeveryday.com/articles/PDO...
in
http://www.phpeveryday.com/articles/PDO...

Ne vnese mi jpg slike. V bazi pod "cover` blob NOT NULL" je 0 moglo pa bi biti [BLOB - 63,8 KB]

 C:\Documents and Settings\Winxp1\Desktop\ptuj.jpg

C:\Documents and Settings\Winxp1\Desktop\ptuj.jpg



Res nimam srede s to kodo

$title = "ZEND FRAMEWORK TUTORIAL";  
$author = "PHP Everyday";  
$cover = fopen($_FILES['slika']['tmp_name'],'rb');  

$sql = "INSERT INTO books (title,author,cover) values(?,?,?)";  

a-ptuj1 ::

Ali za DPO odtajajo drugi stavki kot za PHP. Ali sem naredil samo napako ker nisem nisem vnesel pri($sql = INSERT INTO books (title,author,cover) values(?,?,?)) ponovno spremenjivk pri Values namesti vprašajev?

RockyS ::

Namesti, ampak v sestavljenih metodah. To kar si ti naredil pa ni nič, kar bi se dalo povezati.

Uporabi ta princip http://www.mustbebuilt.co.uk/php/insert...

s tem, da ti imaš tri spremenljivke in samo tiste vstavi.

a-ptuj1 ::

Napisal sem naslednjo kodo pa mi noče vesti slike v bazo. A mi lahko kdo pomaga s kokretnim popravkom teh dveh kod. Hvala že naprej.

vnos.php
<?php  
// configuration  
$dbtype     = "sqlite";  
$dbhost     = "localhost";  
$dbname     = "slike1";  
$dbuser     = "sli";  
$dbpass     = "";  
   
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);  

$title = "slika";  
$author = "PHP Everyday";
$functFP = fopen($_FILES['slika']['tmp_name'],'rb');  
$strBinaryData = fread( $functFP, filesize( $_FILES['slika']['tmp_name'] )); 
$strPictureData = addslashes( $strBinaryData  );
$cover = $strPictureData;  
  
$sql = "INSERT INTO books (title,author,cover) values (:title,:author,:cover)";  
   
$q = $conn->prepare($sql);  
$q->bindParam(':title',  $title,  PDO::PARAM_STR);  
$q->bindParam(':author', $author, PDO::PARAM_STR);  
$q->bindParam(':cover',  $cover,  PDO::PARAM_LOB);  
   
$q->execute();  
?> 


vsnesi.htm
<html>
<head>
<title>Kako vstavimo slike v bazo tipa MySQL ?</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head>

<body>
<form action="vnos.php" method="post" enctype="multipart/form-data" name="send">
	  		<input type="file" name="slika" />
				<br>
   			<input type="submit" name="vnesi" value="Vnesi" />
	</form>

</body>
</html>

Ziga Dolhar ::

Prikaz vseh errorjev imaš vklopljen?
https://dolhar.si/

a-ptuj1 ::

Za zapis kode uporabljam PHPDesigner7, ki mi ne javi nobene napake.

Če pogledam v tabelo preko phpMyAdmin vidim, da mi odpre novo vrstico in vnese vse podatke razen same slike. V stolpcu "cover" bi moralo pisati "[BLOB-65KB]", piše pa "0", stolpec tudi ni prazen. Ali to pomeni, da vseeno nekaj prenese tja?

Sem več ur listal po forumih in spletnih straneh pa mi ni in ni jasno kaj je narobe


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

HTML in SQL pomoč (strani: 1 2 )

Oddelek: Programiranje
517049 (5927) def0r
»

[PHP]Zajem podatkov iz baze

Oddelek: Programiranje
353768 (3405) cobrica
»

MySQL Query Vprašanje

Oddelek: Izdelava spletišč
152960 (2725) overlord_tm
»

sql injection [PHP + mysql]

Oddelek: Informacijska varnost
111752 (1477) Lion29
»

[SQL in PHP] Preprost PHP koledarček, ki je povezan z MySQL bazo

Oddelek: Programiranje
91815 (1577) R33D3M33R

Več podobnih tem