Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given

ans66

Utente Attivo
27 Ago 2011
158
0
16
Non riesco proprio a capire dove sia l'errore anche dopo aver consultato piu' volte le guide dei comandi usati. Mi spieghero' meglio mostrando il codice:

Funzione:

PHP:
<?php 

function connDatabase($query) {


$link = mysql_connect("localhost", "utente", "passw");
if (!$link)
  {
  die('connessione a Mysql non riuscita!: ' . mysql_error());
  }
  
  else 
{

//connessione a database
   $db_selected =mysql_select_db("database",$link);
   if (!$db_selected)
  {
  die('connessione al database non riuscita!: ' . mysql_error());
  }
  
  //qui viene passata la query
  else { 
  
   
   
   // passa query
   $result = mysql_query($query,$link) or die(mysql_error()." ".$query);
   //return $result;
   
   
   if ($result===FALSE) { return '';} 
   else 
   { 
   //$row = mysql_fetch_row($result); - ho provato anche $row = mysql_fetch_row($result); ma ho lo stesso errore
   //$darest = $row[0]; 
   //return $darest;                    
   
   $riga = mysql_fetch_array($result, MYSQL_NUM);
   return $val= $riga[0];
    
   }
    
   mysql_close($link);

       } 
   


}
                              }
?>

Query Select/Insert che passo:

PHP:
<?php 
// Trova ID Da Combo
$SelIdVolv="Select volvenza.idvolvenza From volvenza Where volvenza.volvenza = '".$Volvenza."'";
$IdVolv=connDatabase($SelIdVolv);

$SelIdDiametro="Select diametro.iddiametro From diametro Where diametro.diametro = '".$Diametro."'";
$IdDiametro=connDatabase($SelIdDiametro);

$SelIdRuota="Select tiporuota.idtiporuota From tiporuota Where tiporuota.tiporuota = '".$TipoRuota."'";
$IdRuota=connDatabase($SelIdRuota);

$SelIdPortata="Select portata.idportata From portata Where portata.portata = '".$Portata."'";
$IdPortata=connDatabase($SelIdPortata);

$SelIdSupp="Select tiposupporto.idtiposupporto From tiposupporto Where tiposupporto.tiposupporto = '".$TipoSupporto."'";
$IdSupp=connDatabase($SelIdSupp);

$SelIdSerieS="Select seriesupporti.idseriesupporti From seriesupporti Where seriesupporti.seriesupporti = '".$SerieSupporti."'";
$IdSerieS=connDatabase($SelIdSerieS);

$SelIdLam="Select tipolamiera.idtipolamiera From tipolamiera Where tipolamiera.tipolamiera = '".$TipoLamiera."'";
$IdLam=connDatabase($SelIdLam);

$SelIdPav="Select tipopavimenti.idtipopavimenti From tipopavimenti Where tipopavimenti.tipopavimenti = '".$TipoPavimenti."'";
$IdPav=connDatabase($SelIdPav);

// Inserisci dati nella Tabella dimensionesupporto - dimensione piastra e interassi foro varchar altri double 
$queryinsDimSup="INSERT INTO dimensionesupporto (altezza, disassamento, dimensionipiastra, interassiforo, ";
$queryinsDimSup=$queryinsDimSup."spessorepiastra, larghezzaforca, spessoreforca, forocentrale, foroasse, freno) ";
$queryinsDimSup=$queryinsDimSup."VALUES (".$alt.",".$disas.",'".$dimpiast."','".$intforo."',".$spespiast.",";
$queryinsDimSup=$queryinsDimSup.$largforc.",".$spesforc.",".$foroc.",".$foroas.",'".$freno."')";

$conDB=connDatabase($queryinsDimSup);
if (!$conDB) { die('Errore nella connessione!');}

else {

// Select per Trovare Id Tabella dimensionesupporto
$SeldimsupId="Select dimensionesupporto.iddimensionesupporto From dimensionesupporto Where ";
$SeldimsupId=$SeldimsupId."(dimensionesupporto.altezza =".$alt.") Or ((dimensionesupporto.disassamento =".$disas. " Or ";
$SeldimsupId=$SeldimsupId."dimensionesupporto.dimensionipiastra = '".$dimpiast."' Or ";
$SeldimsupId=$SeldimsupId."dimensionesupporto.interassiforo = '".$intforo."' Or ";
$SeldimsupId=$SeldimsupId."dimensionesupporto.spessorepiastra =".$spespiast." Or ";
$SeldimsupId=$SeldimsupId."dimensionesupporto.larghezzaforca =".$largforc." Or ";
$SeldimsupId=$SeldimsupId."dimensionesupporto.spessoreforca =".$spesforc." Or ";
$SeldimsupId=$SeldimsupId."dimensionesupporto.forocentrale =".$foroc." Or ";
$SeldimsupId=$SeldimsupId."dimensionesupporto.foroasse = ".$foroas." Or ";
$SeldimsupId=$SeldimsupId."dimensionesupporto.freno = ".$freno."))";

 

$dimsupId=connDatabase($SeldimsupId);


// Select per inserimento nella tabella Trovaruota
$queryinsTrova="INSERT INTO trovaruota (codice, descrizione, industriale, diametroid, portataid, seriesupportiid, ";
$queryinsTrova=$queryinsTrova."tipolamieraid, tipopavimentiid, tiporuotaid, tiposupportoid, volvenzaid, linkfoto, linknote, ";
$queryinsTrova=$queryinsTrova."linkpdf, linkdwg, linkdisegno3,linkdisegno4,dimensionesupportoid)";  
$queryinsTrova=$queryinsTrova."VALUES ('".$codice."','".$descrizione."',".$industBoolean.",".$IdDiametro.",";
$queryinsTrova=$queryinsTrova.$IdPortata.",".$IdSerieS.",".$IdLam.",".$IdPav.",".$IdRuota.",".$IdSupp.",";
$queryinsTrova=$queryinsTrova.$IdVolv.",'".$linkfoto."','".$linknote."','".$linkpdf."','".$linkdwg."','".$linkdis3."','";
$queryinsTrova=$queryinsTrova.$linkdis4."',".$dimsupId.")";

$conDbInsTrova=connDatabase($queryinsTrova);
                                                                         

}

?>

prima di chiedere aiuto ho tentato in ogni modo di capire da solo dove sbagliavo ma senza successo.

Grazie:eek::eek::eek:
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Succede spesso questo errore e per la maggior parte dei casi è senza senso.
Ora non ricordo precisamente quando viene fuori (forse quando c'è come risultato un insieme vuoto).

Con mysqli o pdo risolvi sicuramente il problema.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto proverei a scrivere le query
PHP:
<?php
//......
// Trova ID Da Combo
$SelIdVolv="Select volvenza.idvolvenza From volvenza Where volvenza.volvenza = '".$Volvenza."'";
$IdVolv=connDatabase($SelIdVolv); 
//.....
?>
in questo modo (non mi sembrano join) mettendo un var_dump (poi da toglierle) per verificarle
PHP:
<?php
//....
// Trova ID Da Combo
echo "<pre>";//anche questo poi da togliere
$SelIdVolv="SELECT idvolvenza FROM volvenza WHERE volvenza='$Volvenza'";
var_dump($SelIdVolv);
$IdVolv=connDatabase($SelIdVolv);
//analogo per tutte le altre SELECT.....
echo "</pre>";//anche questo poi da togliere
//...
?>

@longo
si è meglio passare a mysqli o alla pdo, però non è detto che risolva se le querystringa sono sbagliate lo sono in tutti i casi
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
ciao
una domanda: quando ti da l'errore, per caso quando fai l'insert?

si capita esattamente con la prima query insert.

In effetti dopo essermi consultato in rete ho visto che mysql_query restituisce FALSE nel caso non si tratti di una query SELECT ed io ho cercato di intercettare questo caso con if ($result===FALSE) { return '';} come puoi vedere nel codice che segue:


PHP:
$result = mysql_query($query,$link) or die(mysql_error()." ".$query);

if ($result===FALSE) { return '';} 
   else 
   { 
   //$row = mysql_fetch_row($result);
   //$darest = $row[0]; 
   //return $darest;                    
   $riga = mysql_fetch_array($result, MYSQL_NUM);
   return $val= $riga[0];
    
   }
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
ciao
intanto proverei a scrivere le query
PHP:
<?php
//......
// Trova ID Da Combo
$SelIdVolv="Select volvenza.idvolvenza From volvenza Where volvenza.volvenza = '".$Volvenza."'";
$IdVolv=connDatabase($SelIdVolv); 
//.....
?>
in questo modo (non mi sembrano join) mettendo un var_dump (poi da toglierle) per verificarle
PHP:
<?php
//....
// Trova ID Da Combo
echo "<pre>";//anche questo poi da togliere
$SelIdVolv="SELECT idvolvenza FROM volvenza WHERE volvenza='$Volvenza'";
var_dump($SelIdVolv);
$IdVolv=connDatabase($SelIdVolv);
//analogo per tutte le altre SELECT.....
echo "</pre>";//anche questo poi da togliere
//...
?>

@longo
si è meglio passare a mysqli o alla pdo, però non è detto che risolva se le querystringa sono sbagliate lo sono in tutti i casi

ciao e grazie per la risposta.

ho visto e comprendo il significato di var_dump($SelIdVolv); quello che non capisco e' echo "<pre>" e echo "</pre>" che ho trovato in rete e serve a preservare spazi ecc ma non comprendo l'utilita' in questo caso.

In ogni caso provero' a correggere come mi hai detto
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
un'altra piccola cosa, perchè fai così?
PHP:
return $val= $riga[0];
se devi ritornare il valore di $riga[0]
basta
PHP:
return $riga[0];
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
grazie per l'informazione. Ci tenevo a precisare che per la creazione delle query ho utilizzato FlySpeed SQL Query.
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
ciao
un'altra piccola cosa, perchè fai così?
PHP:
return $val= $riga[0];
se devi ritornare il valore di $riga[0]
basta
PHP:
return $riga[0];

si hai ragione questo e' un errore. purtroppo nei vari tentativi che ho fatto per trovare una soluzione mi sa che mi sono un po' perso!
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
non capisco il motivo per cui dopo aver modificato il mio codice con var_dump e <pre> vedo le query select con un apice di troppo. Comunque persiste l'errore. mostro di seguito il risultato delle query e l'errore:

Codice:
string 'SELECT idvolvenza FROM volvenza WHERE volvenza='boccola'' (length=56)
Resource id #4
string 'Select diametro.iddiametro From diametro Where diametro.diametro = '80to100mm'' (length=78)
Resource id #5
string 'Select tiporuota.idtiporuota From tiporuota Where tiporuota.tiporuota = 'AnelloGomma'' (length=85)
Resource id #6
string 'Select portata.idportata From portata Where portata.portata = '50to60kg'' (length=72)
Resource id #7
string 'Select tiposupporto.idtiposupporto From tiposupporto Where tiposupporto.tiposupporto = 'PiastraGirevole'' (length=104)
Resource id #8
string 'Select seriesupporti.idseriesupporti From seriesupporti Where seriesupporti.seriesupporti = 'Xline'' (length=99)
Resource id #9
string 'Select tipolamiera.idtipolamiera From tipolamiera Where tipolamiera.tipolamiera = 'Lamierazincata'' (length=98)
Resource id #10
string 'Select tipopavimenti.idtipopavimenti From tipopavimenti Where tipopavimenti.tipopavimenti = 'PavimentoPiastrelle'' (length=113)
Resource id #11
1
( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\database\insruote.php on line 56
Call Stack
#	Time	Memory	Function	Location
1	0.0028	431296	{main}( )	..\insruote.php:0
2	0.0248	443712	connDatabase( )	..\insruote.php:178
3	0.1599	443872	mysql_fetch_array ( )	..\insruote.php:56
Errore nella connessione!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, in fase di sviluppo è molto utile usare la funzione mysql_error(), da quello che ti viene restituito è più facile risalire al problema
PHP:
if (!$result) {
    echo "Errore query : " . $query . "<br/>" . mysql_error();
}
edit
visto che l'errore è nella insert dovrai modificare quel przzo di codice
PHP:
$conDB = connDatabase($queryinsDimSup);
if (!$conDB) {
    echo "Errore query : " . $queryinsDimSup . "<br/>" . mysql_error();
    die();
}
 
Ultima modifica:

ans66

Utente Attivo
27 Ago 2011
158
0
16
ho provato a verificare le variabili passate inserendo degli echo ma non ci sono apici nelle variabili passate:

Codice:
80to100mmboccola

string 'SELECT idvolvenza FROM volvenza WHERE volvenza='boccola'' (length=56)
Resource id #4
string 'Select diametro.iddiametro From diametro Where diametro.diametro = '80to100mm'' (length=78)
Resource id #5
string 'Select tiporuota.idtiporuota From tiporuota Where tiporuota.tiporuota = 'AnelloGomma'' (length=85)
Resource id #6
string 'Select portata.idportata From portata Where portata.portata = '50to60kg'' (length=72)
Resource id #7
string 'Select tiposupporto.idtiposupporto From tiposupporto Where tiposupporto.tiposupporto = 'PiastraGirevole'' (length=104)
Resource id #8
string 'Select seriesupporti.idseriesupporti From seriesupporti Where seriesupporti.seriesupporti = 'Xline'' (length=99)
Resource id #9
string 'Select tipolamiera.idtipolamiera From tipolamiera Where tipolamiera.tipolamiera = 'Lamierazincata'' (length=98)
Resource id #10
string 'Select tipopavimenti.idtipopavimenti From tipopavimenti Where tipopavimenti.tipopavimenti = 'PavimentoPiastrelle'' (length=113)
Resource id #11

a questo punto ho il timore che l'errore possa essere nella prima parte dove acquisisco delle variabili POST quindi inserisco anche la prima parte:

PHP:
$codice = $_POST['codice'];  
$descrizione = $_POST['descrizione'];
$alt = $_POST['altezza'];
$disas = $_POST['disassamento'];
$dimpiast = $_POST['dimpiastra'];
$intforo = $_POST['intforo'];
$spespiast = $_POST['spespiastra'];
$largforc = $_POST['largforca'];
$spesforc = $_POST['spesforca'];
$foroc = $_POST['forocen'];
$foroas = $_POST['foroasse'];

$freno=$_POST['freno'];

if (isset($_POST['freno'])) {$freno=TRUE;} else {$freno=FALSE;} 

       
$applicazione = $_POST['applicazione'];  
$comeRuota = $_POST['comeRuota']; 
$TipoRuota = $_POST['TipoRuota'];  
$Diametro = $_POST['Diametro'];
echo $Diametro; 
$Portata = $_POST['Portata'];
$TipoSupporto = $_POST['TipoSupporto'];
$SerieSupporti = $_POST['SerieSupporti'];
$TipoLamiera = $_POST['TipoLamiera'];
$TipoPavimenti = $_POST['TipoPavimenti'];
$Volvenza=$_POST['Volvenza'];
echo $Volvenza; 

$linkfoto=$_POST['linkfoto'];
$linknote=$_POST['linknote'];
$linkpdf=$_POST['linkpdf'];
$linkdwg=$_POST['linkdwg'];
$linkdis3=$_POST['linkdis3'];
$linkdis4=$_POST['linkdis4'];



// Boolean $industBoolean=FALSE di Default (cioe' Collettivita') x inserimento su Tabella Trovaruota
$industBoolean=FALSE;
if ($_POST['applicazione']='Industriali'){ $industBoolean=TRUE;}
else { $industBoolean=FALSE;}


$queryins='';
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
ho capito che il secondo apice era legato al fatto che nella stampata c'era la definizione

string 'query' per cui vedo due apici...mi ero confuso...scusatemi!

Sto cambiando il codice come mi ha detto ciric cosi' posso analizzare la query insert
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
adesso mi e' chiaro che l'errore e' nella query insert tabella dimensionesupporto:

Codice:
Errore query : INSERT INTO dimensionesupporto (altezza, disassamento, dimensionipiastra, interassiforo, spessorepiastra, larghezzaforca, spessoreforca, forocentrale, foroasse, freno) VALUES (120,15,'95x80','80x60',2,44,3,12,8,'1')

ho appurato che l'inserimento nella tabella dimensionesupporto avviene ma poi si verifica l'errore...non capisco proprio..

campi tabella:

iddimensionesupporto int(11) No
altezza double No
disassamento double No
dimensionipiastra varchar(20) No
interassiforo varchar(20) No
spessorepiastra double No
larghezzaforca int(11) No
spessoreforca double No
forocentrale double No
foroasse double No
freno tinyint(1) No
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
ho risolto il problema modificando come segue:

PHP:
// passa query
   $result = mysql_query($query,$link) or die(mysql_error()." ".$query);
   //return $result;
   
   if (!is_resource($result)) { return '';} 
   else 
   { 
   //$row = mysql_fetch_row($result);
   //$darest = $row[0]; 
   //return $darest;                    
   $riga = mysql_fetch_array($result, MYSQL_NUM);
   return $riga[0];
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
una domanda: nella tabella dimensionesupporto e anche nelle altre dove definisci l'id, hai messo che l'id sia primarykey autoincrement?
in quello che hai scritti vedo che gli hai dato solo int(11)
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
ciao
una domanda: nella tabella dimensionesupporto e anche nelle altre dove definisci l'id, hai messo che l'id sia primarykey autoincrement?
in quello che hai scritti vedo che gli hai dato solo int(11)

si ho messo l'ID primarykey autoincrement e gli ho dato solo int(11).

Ho la sensazione che l'errore era dovuto semplicemente al fatto che non intercettavo la variabile che scaturiva dalla query insert e per questo motivo mi dava l'errore quando mysql_fetch_array non trovava una resource. Ho risolto verificando se la variabile in uscita non era una resource (!is_resource) e in questo caso ho forzato l'uscita dalla funzione con un return con valore della variabile in uscita a mio piacimento.

Onestamente credevo che nel caso di una query Insert ottenessi sempre una variabile con valore False dalla mysql_query ma sicuramente mi sbagliavo
 
Discussioni simili
Autore Titolo Forum Risposte Data
F [MySQL] Warning 1265 data truncated for column... MySQL 5
M Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in PHP 6
B Warning: mysql_connect(): Access denied for user 'DIREZIONE'@'81.88.55.179' (using password: YES) PHP 6
G [PHP] Warning: Cannot modify header information - headers already sent by PHP 3
G [PHP] Problema - Warning: session_start() [function.session-start] PHP 9
G Warning: mysql_num_rows() che problema è? PHP 3
P Warning: mysqli_query() expects parameter 1 to be mysqli PHP 2
C ERRORE: Warning: move_uploaded_file()... come risolverlo? PHP 1
JackIlPazzo Warning: Invalid argument supplied for foreach() PHP 1
N warning su sessione PHP 2
F Warning: Invalid argument supplied for foreach() PHP 3
L Problema messaggio d'errore -Warning: mysqli_num_rows() expects parameter 1 to be mysqli_ etc etc... PHP 2
pup3770 Su Mac funziona - su windows da warning PHP 9
E Warning: session_start() PHP 1
P Warning: mysql_num_rows() expects parameter 1 to be resource, array given in PHP 9
A Warning: mysql_result() expects parameter 1 to be resource, boolean given MySQL 2
I Warning: Division by zero in Joomla 0
S Help : Warning: mail() [function.mail] PHP 2
H Warning: Cannot modify header information... PHP 6
P Warning email() PHP 116
catellostefano CLASSE PHP Warning: mysql_fetch_assoc() expects parameter 1 to be resource PHP 2
Frank10 Problema w3c warning HTML5 -.-" HTML e CSS 5
neo996sps Warning su redirect della pagina PHP 9
M Warning: mysql_query() expects parameter 2 to be resource, boolean given PHP 3
S Warning sulle sessioni, come fare? PHP 1
catellostefano Problema per richiamare file xml -- Warning: DOMDocument::load() [domdocument.load]: PHP 0
L Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in .... PHP 2
L Warning: Cannot modify header information - headers already sent by... PHP 9
H Warning: session_start() [function.session-start]: Cannot send session cache limiter PHP 8
S errore warning mysql_ferch_array() e mysql_free_result() PHP 5
A Warning strano PHP 2
JellyBelly Warning Uso Rename PHP 2
M Warning: session_start(): Cannot send session cache... ???? PHP 5
W Warning: main(./WEB-INF/etc/config.php): PHP 3
M Warning: Cannot modify header information - headers already sent by (output started a PHP 1
C problema con un warning PHP 0
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0

Discussioni simili