PDA

View Full Version : Array in php...


fifth
30-11-2006, 13:08
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 ;)

vizzz
30-11-2006, 13:36
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

andbin
30-11-2006, 13:43
$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 ...
}

fifth
30-11-2006, 14:38
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

andbin
30-11-2006, 14:52
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).

fifth
30-11-2006, 15:19
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:

fifth
30-11-2006, 15:55
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...