Forum » Izdelava spletišč » 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
poglej.php mi izpiše
Slika No.1
Slika No.2
Slika No.3
prikazi.php
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
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?
Btw:
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.
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
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... ;)
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…
- spremenil: keworkian ()
techfreak :) ::
Tale link je v bistvu rešitev nekaterih njegovih težav:
Uporabi raje PDO - Why you Should be using PHP's PDO for Database Access.
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.
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?
Č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]
Res nimam srede s to kodo
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]
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?
MisterR ::
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.
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
vsnesi.htm
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>
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
Č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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | HTML in SQL pomoč (strani: 1 2 )Oddelek: Programiranje | 7680 (6558) | def0r |
» | [PHP]Zajem podatkov iz bazeOddelek: Programiranje | 4064 (3701) | cobrica |
» | MySQL Query VprašanjeOddelek: Izdelava spletišč | 3228 (2993) | overlord_tm |
» | sql injection [PHP + mysql]Oddelek: Informacijska varnost | 1871 (1596) | Lion29 |
» | [SQL in PHP] Preprost PHP koledarček, ki je povezan z MySQL bazoOddelek: Programiranje | 1933 (1695) | R33D3M33R |