Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Problema update table
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
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  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community