Reputation: 275
I currently have a table that is 17 columns wide and has 30 records.
Basically, it's a table from another site that I'm scraping and then inserting into MySQL table.
$html = str_get_html($newHTML); // get the HTML
$tdContents = ""; // declare variable
$rowArray = array(); // declare array for records
for ($j = 0; $j < 510; $j++) // loop through each TD element, 17 columns by 30 records so 510
{
$f = $html->find("td",$j); // get the td elements from the html
$tdContents = $f->innertext; // get the text inside the td
$rowArray[] = $tdContents; // store that text inside the array
if ($j == 16 || $j == 33 || $j == 50 || $j == 67 || $j == 84 || $j == 101 || $j == 118 || $j == 135 || $j == 152 || $j == 169 || $j == 186 || $j == 203 || $j == 220 || $j == 237 || $j == 254 || $j == 271 || $j == 288 || $j == 305 || $j == 322 || $j == 339 || $j == 356 || $j == 373 || $j == 390 || $j == 407 || $j == 424 || $j == 441 || $j == 458 || $j == 475 || $j == 492 || $j == 509) // every 17 td elements
{
$comma_separated = implode("','", $rowArray); // seperate the array contents with commas and apostrophes, set up for mysql
$comma_separated = "'" . $comma_separated . "'"; // add apostrophes to beginning and end of the string
$result = mysql_query("INSERT INTO standings_20112012 VALUES (".$comma_separated.")"); // insert the data into mysql
$rowArray = array(); // clear the array, for the next record
}
}
Comments should explain fine. This generates a table 17 x 30 with all info I need. If I run this again, it'll insert another 30 records, which is bad. I want to only update/overwrite etc. the table that's already created. So there should only ever be 30 records in the table. I'm stumped with this however.
Any help?
Upvotes: 1
Views: 460
Reputation: 2924
Add a primary key to your dataset that is unique. Then change your mysql query to INSERT IGNORE
and it will throw out the duplicates. Alternatively you can can also use a ON DUPLICATE UPDATE
if you need to update what you already have in the table.
Upvotes: 2