View Full Version : Array in php...
Salve a tutti. Ho questo frammento di codice:
$array_let = array("a","b","c","d","e");
while ($row = mysql_fetch_array($array_let)){
...
}
All'altezza del while mi da l'errore
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\Apache Group\Apache2\htdocs\file.php on line 38
Qualcuno sa aiutarmi? :)
Thanks ;)
bhe te lo dice anche php, la funzione mysql_fetch_array è fatta per scansionare array generati/estratti da una query sql...quindi non è adatta a scorrere un vettore definito da te
for ($i = 0; $i < count($array_let); $i++)
fa al caso tuo
$array_let = array("a","b","c","d","e");
while ($row = mysql_fetch_array($array_let)){
...
}
All'altezza del while mi da l'erroreConfermo quanto detto da vizzz, mysql_fetch_array ha a che fare solo ed esclusivamente con un recordset (il risultato di una query) MySQL.
Se vuoi iterare su un array, c'è il foreach che è fatto apposta. ;)
foreach ($array_let as $let)
{
.... usa $let ...
}
sto provando. il problema è che all'interno del foreach devo inserire una procedura di interrogazione di un database e alla fine mi da l'errore
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\Apache Group\Apache2\htdocs\file.php on line 47
ps. Grazie dell'aiuto :) spero di non rompere troppo :P
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\Apache Group\Apache2\htdocs\file.php on line 47C'è un tempo limite entro cui lo script php deve completare la sua esecuzione. Il default è di 30 secondi ma è configurabile in php.ini tramite la direttiva max_execution_time.
Se non hai possibilità di modificare il php.ini, puoi mettere in testa al tuo script:
set_time_limit (0);
Che permette di non avere limiti di tempo. Questo però è valido solo se il PHP non sta funzionando in "safe mode".
Comunque prima di alterare il limite di tempo, verifica che non ci siano altri problemi o rallentamenti o blocchi di qualunque altro tipo (sul db per esempio).
sì, infatti. smanettando un pò ho tolto l'errore del tempo. Adesso ho questa situazione:
foreach ($array_let as $let){
$query = "select count(*) from table where id ='a2' && value=1";
$ans = mysql_query($query) or die("Error executing query");
while($row = mysql_fetch_row($ans)) extract($row);
echo "$row[0]";
mysql_free_result($ans);
che mi procura l'errore
Warning: mysql_query(): Unable to save result set in C:\Program Files\Apache Group\Apache2\htdocs\file.php on line 47
Error executing query
in corrispondenza della linea
$ans = mysql_query($query) or die("Error executing query");
... Preciso che in MySQL tale interrogazione funziona perfettamente ...
Sto sclerando.... :muro:
Così funziona:
foreach ($array_let as $let){
$query = "...
$ans = mysql_query($query) or die("Error executing query");
echo "$let";
while($row = mysql_fetch_row($ans)){
extract($row);
echo "$row[0] - $row[1]";
}
...
}
maledetta graffa.... :)
L'unica cosa è che dovendo eseguire moltissime query sfora dal tempo... mi sa che l'unica è allungarlo...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.