Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP MYSQL Insert/Update

Tags:

php

mysql

I have a simple table as below.

CREATE TABLE `stats` (
  `id` int(11) NOT NULL auto_increment,
  `zones` varchar(100) default NULL,
  `date` date default NULL,
  `hits` int(100) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

So just storing simple hits counter per zone per day.

But I just want to increment the hits value for the same day.

I have tried the MYSQL DUPLICATE KEY UPDATE but this wont work as I may have many zones on different dates so I cant make them unique or dates.

So the only way I can think is first to do a query to see if a date exists then do a simple if() for insert/update

Is their a better way of doing such a task as there maybe be many 1000's hits per day.

Hope this makes sense :-).

And thanks if you can advise.

like image 354
Lee Avatar asked May 09 '09 22:05

Lee


People also ask

How do I update a table in MySQL with PDO?

Update Data In a MySQL Table Using MySQLi and PDO. The UPDATE statement is used to update existing records in a table: UPDATE table_name. SET column1=value, column2=value2,... WHERE some_column=some_value. Notice the WHERE clause in the UPDATE syntax: The WHERE clause specifies which record or records that should be updated.

How to add data to a mySQL table in PHP?

After a database and a table have been created, we can start adding data in them. Here are some syntax rules to follow: The SQL query must be quoted in PHP. String values inside the SQL query must be quoted. Numeric values must not be quoted. The word NULL must not be quoted. The INSERT INTO statement is used to add new records to a MySQL table:

What is the MySQL insert on duplicate key update statement?

Introduction to the MySQL INSERT ON DUPLICATE KEY UPDATE statement The INSERT ON DUPLICATE KEY UPDATEis a MySQL’s extension to the SQL standard’s INSERT statement.

Can I use INSERT UPDATE DELETE and view record in PHP?

Guys, Any type of web application has those features such as Insert Update Delete and View Record. Once you have learned those features, then you can use those features with any type of application without facing any problem. Guys, I have been using the 5.6 PHP Version, If you have the same or previous version.


2 Answers

Declare the tuple (zone, date) as unique in your CREATE statement. This will make INSERT ... ON DUPLICATE UPDATE work as expected:

CREATE TABLE `stats` (
  `id` int(11) NOT NULL auto_increment,
  `zone` varchar(100) default NULL,
  `date` date default NULL,
  `hits` int(100) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE (`zone`, `date`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

INSERT INTO stats (zone, date, hits) values ('zone1', 'date1', 1) ON DUPLICATE KEY UPDATE hits = hits + 1;
like image 91
Ayman Hourieh Avatar answered Oct 06 '22 12:10

Ayman Hourieh


$result = mysql_query("SELECT id FROM stats WHERE zone=$zone AND date=$today LIMIT 1");
if(mysql_num_rows($result)) {
    $id = mysql_result($result,0);
    mysql_query("UPDATE stats SET hits=hits+1 WHERE id=$id");
} else {
    mysql_query("INSERT INTO stats (zone, date, hits) VALUES ($zone, $today, 1)");
}

Something like that, if I've interpreted you correctly... that's completely untested. You can figure out what the variables are.

like image 23
mpen Avatar answered Oct 06 '22 12:10

mpen