如何解决此错误?
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便使用“更新user_options set value =' 1'更新user_options set value =' 1'其中name =' slider&#39 ;; INSERT INTO user_options(' at line 2
代码
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;
}
函数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;
}
如果exixts基于名称
更新,我想插入数据答案 0 :(得分:1)
试试这个
INSERT INTO subs
(col1,col2,col3)
VALUES
(?, ?, ?)
ON DUPLICATE KEY UPDATE
Col1 = VALUES(value1),
Col2 = VALUES(value2);
根据您的问题
INSERT INTO values
(name,value,entrydate)
VALUES
('{$obj['name']}','{$obj['value']}','{$obj['entrydate']}')
ON DUPLICATE KEY UPDATE
value = VALUES(value),
entrydate = VALUES(entrydate)
答案 1 :(得分:1)
您的代码中存在3个问题:
在sql语句的on duplicate key update
部分中,您应该为值字段赋值,而不是为name字段赋值。
... value='{$obj['value']}'
答案 2 :(得分:1)
“INSERT ... ON DUPLICATE KEY UPDATE”使用此功能。它将帮助您解决问题。 http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html