php - IF EXISTS it should UPDATE the row, ELSE INSERT INTO a new row. How to solve this error?
How to solve this ERROR?
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update user_options set value='1' where name='slider';INSERT INTO user_options (' at line 2
Code
public function update($slider, $welcomebox, $servicebox, $postbox, $testimonials, $welcomemessage, $welcomededcription, $welcomelink, $welcomelinktitle, $servicetitle, $totalservicedisplay, $ourservice, $blogtitle, $totalblogdisplay, $ourblog, $newstitle, $totalnewsdisplay, $ournews, $totaltestimonialdisplay, $ourtestimonial) {
$db = connectionstart();
$currentdatetime = date("Y-m-d H:i:s", time());
$sql = "select * from user_options ";
$result = mysql_evaluate($db, $sql, 0);
$columns = array(
array(
'name' => 'slider'
, 'value' => $slider
, 'entrydate' => $currentdatetime
),
array(
'name' => 'welcomebox'
, 'value' => $welcomebox
, 'entrydate' => $currentdatetime
),
array(
'name' => 'servicebox'
, 'value' => $servicebox
, 'entrydate' => $currentdatetime
),
array(
'name' => 'postbox'
, 'value' => $postbox
, 'entrydate' => $currentdatetime
),
array(
'name' => 'testimonials'
, 'value' => $testimonials
, 'entrydate' => $currentdatetime
),
array(
'name' => 'welcomemessage'
, 'value' => $welcomemessage
, 'entrydate' => $currentdatetime
),
array(
'name' => 'welcomededcription'
, 'value' => $welcomededcription
, 'entrydate' => $currentdatetime
),
array(
'name' => 'welcomelink'
, 'value' => $welcomelink
, 'entrydate' => $currentdatetime
),
array(
'name' => 'welcomelinktitle'
, 'value' => $welcomelinktitle
, 'entrydate' => $currentdatetime
),
array(
'name' => 'servicetitle'
, 'value' => $servicetitle
, 'entrydate' => $currentdatetime
),
array(
'name' => 'totalservicedisplay'
, 'value' => $totalservicedisplay
, 'entrydate' => $currentdatetime
),
array(
'name' => 'ourservice'
, 'value' => $ourservice
, 'entrydate' => $currentdatetime
),
array(
'name' => 'blogtitle'
, 'value' => $blogtitle
, 'entrydate' => $currentdatetime
),
array(
'name' => 'totalblogdisplay'
, 'value' => $totalblogdisplay
, 'entrydate' => $currentdatetime
),
array(
'name' => 'ourblog'
, 'value' => $ourblog
, 'entrydate' => $currentdatetime
),
array(
'name' => 'newstitle'
, 'value' => $newstitle
, 'entrydate' => $currentdatetime
),
array(
'name' => 'totalnewsdisplay'
, 'value' => $totalnewsdisplay
, 'entrydate' => $currentdatetime
),
array(
'name' => 'ournews'
, 'value' => $ournews
, 'entrydate' => $currentdatetime
),
array(
'name' => 'totaltestimonialdisplay'
, 'value' => $totaltestimonialdisplay
, 'entrydate' => $currentdatetime
),
array(
'name' => 'ourtestimonial'
, 'value' => $ourtestimonial
, 'entrydate' => $currentdatetime
)
);
$results = mysql_updateoptionfields($db, $columns);
if ($results == true) {
$results = 'SUCCESS';
}
connectionclose($db);
return $result;
}
Function mysql_updateoptionfields
function mysql_updateoptionfields($db, $columns) {
$sql = "";
foreach ($columns as $obj) {
$sql.="INSERT INTO user_options (name,value,entrydate) VALUES ('{$obj['name']}','{$obj['value']}','{$obj['entrydate']}') ON DUPLICATE KEY UPDATE name=values(name);
update user_options set value='{$obj['value']}' where name='{$obj['name']}';";
}
if ($sql != '') {
$result = mysql_query($sql, $db) or die(mysql_error());
}
return $result;
}
I want to insert data if exixts otherwise update based on name
Answer
Solution:
Try this
As per your question
Answer
Solution:
"INSERT … ON DUPLICATE KEY UPDATE” use this. It will help you to fix ur problem. http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
Answer
Solution:
There are 3 problems in your code:
In the
on duplicate key update
part of the sql statement you should assign value to the value field, not to the name field.... value='{$obj['value']}'