On 8/11/2011 9:34 AM, Jason Pruim wrote:
> 
> Hey Jim,
> 
> Would that still hold true with inserting into a database which is the true 
> end of it? This is going to be a one time thing I'm doing and I'm trying to 
> make it a learning experience as I go since that's what everything should be 
> right?
> 

Yes, taking one of your other emails, you would do something like this.

<?PHP

$SQL = "SELECT  areacode, prefix
        FROM    Test
        WHERE   `areacode` = '907'
        AND     `prefix` = '200'";

$result = mysql_query($SQL);

$values = '';

while( $row = mysql_fetch_assoc($result) ) {
  foreach ( range(0, 9999) AS $n ) {
    $values .= " VALUES ('".
               sprintf('%03d-%03d-%04d', $row['areacode'], $row['prefix'], $n) .
               "')";
  }
}
echo 'INSERT INTO Test (fullnumber) ' . $values;

?>

You should see...

INSERT INTO Test (fullnumber) VALUES ('907-200-0000') VALUES ('907-200-0001')
VALUES ('907-200-0001') etc...

What this allows you to do is have one long string generated in memory then
inserted into the DB.  If you have any type of indexes on this table/column then
it would only require one re-indexing of the table for the single INSERT
statement vs 10000 re-indexes for 10000 separate INSERT statements.

Cuts the DB processing time down a lot.

Also, just so you know, if you place set_time_limit(0); at the top of the
script, it will allow the script to run as long as it needs to.

See: http://php.net/manual/en/function.set-time-limit.php

Jim Lucas

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to