我的代码:

$query = 'INSERT INTO articles(id, name, picture, url, origAmount, currAmount, added) VALUES ';

$insertQuery = array();
$insertData = array();

$date = getDate();

foreach ($articles as $article) {
    $insertQuery[] = '(?,?,?,?,?,?,?)';
    $insertData[] = $article->id;
    $insertData[] = $article->name;
    $insertData[] = $article->picture;
    $insertData[] = $article->url;
    $insertData[] = $article->amount;
    $insertData[] = $article->amount;
    $insertData[] = $date['year'] . '-' . $date['mon'] . '-' . $date['mday'];
}

if(!empty($insertQuery)) {
    $query .= implode(', ', $insertQuery);
    $handle = $this->link->prepare($query);
    $handle->execute($insertData);
}

如果ID已经存在,我只想更新Curror。
我试过了
$insertQuery[] = '(?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE currAmount = (currAmount)';

它给予
'SQLSTATE[42000]:语法错误或访问冲突:1064[…]靠近'('0192801635','The Renaissance A Ve'在第1行'
所以行的文字内容,它在空表上插入了fine,所以内容本身没有问题。
我该怎么做?
编辑:已解决
内爆后,加上
$query .= ' ON DUPLICATE KEY UPDATE currAmount = VALUES(currAmount)';

谢谢大家。

最佳答案

... ON DUPLICATE KEY UPDATE currAmount=values(currAmount)

忘记添加值关键字
更新
完整示例:
$insertQuery[] = '(?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE currAmount=values(currAmount)';

关于php - 带数组的准备好的语句中的ON DUPLICATE KEY UPDATE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46543881/

10-10 08:57