使用INSERT更新表时出错... ON DUPLICATE KEY UPDATE

时间:2018-06-04 15:36:39

标签: php mysql insert on-duplicate-key

我对mySQL比较陌生。出于某种原因,我在INSERT ON DUPLICATE KEY UPDATE命令中收到错误。这就是它的样子:

print "Writing status to file \n";
$mysqliNode = new mysqli('blah.net', 'us', 'pw', "CATV_Mon");
$stmtNode = $mysqliNode->prepare("INSERT INTO CATV_Mon.nodeDetail (nodID, pctRedYellow, count)
                                  VALUES (?,?,?) 
                                  ON DUPLICATE KEY UPDATE pctRedYellow   = VALUES(percentRedYellow)
                                                         ,count     = VALUES(count)                               
                                  ");
$index = "ABCF";
$tempCount = 5000; 
$node_percent_down = 55;
$stmtNode->bind_param("sss",$index,$node_percent_down,$tempCount);
if(!$stmtNode->execute) {
        $tempErr = "Error getting Node $nod info and put in table: " . $stmtNode->error;
        printf($tempErr . "\n");    //show mysql execute error if exists  
        $err->logThis($tempErr);
        printf ("will die on purpose now \n");  
        die();          
} //if stmtNode didn't execute ok

当我运行它时,我看到(它没有显示错误消息):

Writing status to file
Error getting Node WILL info and put in table:  
will die on purpose now

我尝试使用MySQL Workbench中的语句:

INSERT INTO CATV_Mon.nodeDetail (nodID, pctRedYellow, count)
                                  VALUES ("ABCE",30,5000) 
                                  ON DUPLICATE KEY UPDATE pctRedYellow   = VALUES(pctRedYellow)
                                                         ,count     = VALUES(count) ;

这样可行,并说1行受影响,我在表格中看到了它。当我更改要更新的值并在工作台中运行它时,它会更新已更改的内容并在表中看起来很好。

为什么它在php脚本中失败了?我尝试更改我尝试插入的nodeID,但同样失败。

表结构是: nodID varchar(20)主键 pctRedYellow int(5) count int(8)

我在网上搜索,看起来我正在做我应该做的事情。 insert on duplicate key update。我以为我需要在我的声明中使用WHERE,但它在工作台中工作,并且链接的语法看起来很好。

1 个答案:

答案 0 :(得分:0)

我找到了这个,并修复了它。 bind param doesn't work

$ stmtNode-> bind_param(' sii',$ index,$ node_percent_down,$ tempCount);