 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
sorin12
Data înscrierii: 06/Apr/2008
Mesaje: 2
|
| Trimis: Dum Apr 06, 2008 11:00 pm Titlul subiectului: Problema update table |
|
|
Salut,
Incerc sa modific un camp dintr-un tabel cu 2500 inregistrari si nu prea stiu exact cum sa o fac pentru ca daca incerc cu un loop dureaza foarte mult si imi da Fatal error: Maximum execution time of 30 seconds exceeded .... pentru ca sunt 2500*2500 = 6.250.000 operatii
$sql="select * from tbl_prod";
$res=mysql_query($sql);
while ($row = mysql_fetch_array($res))
{
$string = $row[prod_price];
$price = substr($row[prod_price], 2, strlen($row[prod_price])-2)
$sql="UPDATE tbl_prod SET prod_price ='". $price. "'";
mysql_query($sql);
}
eu as m-am gandit sa fac ceva de genul
$sql="UPDATE tbl_prod SET prod_price ='". substr(prod_price, 2, strlen(prod_price)-2) . "'";
daca se poate pentru ca ar reduce numarul operatiilor la 2500. Problema este ca nu stiu cum sau daca se poate prelua valuare lui prod_price si introducerea lui in functia substr.
Prbolema rezolvata!
se foloseste functia substring() din mysql
$sql="UPDATE tbl_prod SET prod_price = substring(prod_price, 2)"; |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1596
Locație: Sibiu
|
| Trimis: Lun Apr 07, 2008 8:28 am Titlul subiectului: |
|
|
N-ar strica data viitoare sa iti analizezi putin codul. Hai sa il analizam impreuna:
1. $sql="select * from tbl_prod";
2. $res=mysql_query($sql);
Aici am selectat toate inregistrarile (2500 din tabela).
3. while ($row = mysql_fetch_array($res))
Pentru toate cele 2500 de inregistrari, rulam urmatorul bloc
4. {
5. $string = $row[prod_price];
extragem pretul produsului (btw, data viitoare foloseste $row["prod_price"]). Cat timp nu ai anterior definita constanta prod_price, iti ingreuneaza codul bine (linia asta se executa cam de 5 ori mai lent)
6. $price = substr($row[prod_price], 2, strlen($row[prod_price])-2)
Extragem pretul fara primele doua cifre (al treilea argument e in plus aici, iti ingreuneaza numai executia. In lipsa lui, substr oricum merge pana la finalul stringului)
7. $sql="UPDATE tbl_prod SET prod_price ='". $price. "'";
8. mysql_query($sql);
Actualizam prod_price in tabela cu noul pret PENTRU TOATE INREGISTRARILE
9. }
Acum spune-mi, asta vroiai sa iti faca codul? |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|