相关疑难解决方法(0)

ON DUPLICATE KEY UPDATE的准备语句语法(params错误数)

这是我想要做的.如果主键(entity_id)存在,我想插入此表或更新记录.我只是遇到了SQL语法的问题.它不会让我有比第一个'VALUES'更多的参数,所以我得到以下错误:

参数索引超出范围(7>参数个数,即6).

int insertOrUpdateSuccess = MyDBSyncher.UPDATE("INSERT INTO " + DB_NAME + ".entities " +
    "(`entity_id`, `wai_type`, `wai_id`, `character_id`, `looted`, `creation_time`) " +
    "VALUES ((?), (?), (?), (?), (?), (?)) " +
    "ON DUPLICATE KEY UPDATE " +
    "`wai_type`='(?)', `wai_id`='(?)', `character_id`='(?)', `looted`='(?)'", 
    new String[]{tmpEntityId, values[0], values[1], values[2], values[3], values[4],
    values[0], values[1], values[2], values[3]});
Run Code Online (Sandbox Code Playgroud)

有点像我想的那样,但我不能解释它的需要.很抱歉可能会发布重复内容.

哦,这是我的代码中的UPDATE()函数:

public static int UPDATE(String updateStatement, String[] params){
    try {
        if(!conn.isClosed()) {
            logger.trace("Successfully connected to MySQL server using TCP/IP - " + conn);

            stat = conn.prepareStatement(updateStatement); …
Run Code Online (Sandbox Code Playgroud)

java mysql prepared-statement sql-update on-duplicate-key

3
推荐指数
2
解决办法
7846
查看次数

所有列都设置为相同的值

我完全不知道我的脚本有什么问题。JSON 数据正确输入,变量 $i 和 $current 在 forloop 的每个阶段都应该是它们。

它似乎一直在用 id 更新我的数据库,所以在 id 为 11 的情况下,它将用数字 11 更新所有列。

这是我的脚本:

if($mode == 'SAVE_BUYING_ROW')
{   
    $JSON = (array)$JSON ;

    include('pdoconnect.php') ;
    $result = $dbh->prepare("UPDATE parts_trading_instructions
                 SET quantity = ?, supplierRef = ?, currencyRef = ?, 
                             net = ?, vat = ?, shippingNet = ?,
                 shippingVat = ?, direct = ?, ebayItemNumber = ?
                 WHERE id = ?") ;
    $i = 0 ;
    foreach($JSON as $current) {
        $current = (string)$current ;
        if($i == 0) …
Run Code Online (Sandbox Code Playgroud)

php mysql

1
推荐指数
1
解决办法
162
查看次数