26

MYSQL DBの情報を更新しようとしていますが、node.jsで更新する方法がわかりません。これは私が使用しているmysqlドライバーですhttps://github.com/felixge/node-mysql

私が今まで持っているもの

connection.query('SELECT * FROM users WHERE UserID = ?', [userId], function(err, results) {
if (results[0]) {
if (results[0].Name!=name) {
console.log(results[0].Name);
connection.query('UPDATE users SET ? WHERE UserID = ?', [userId], {Name: name});
}
console.log(results[0].UserID);
}
});

を除いてすべてが機能します...

connection.query('UPDATE users SET ? WHERE UserID = ?', [userId], {Name: name});

PHPではこれがあります...

mysql_query("UPDATE users SET Name='".$_GET["name"]."' WHERE UserID='".$row['UserID']."'");

何が間違っているのかわかりませんが、問題はここにあると確信しています

connection.query('UPDATE users SET ? WHERE UserID = ?', [userId], {Name: name});
4

5 に答える 5

50

による答えruakhは完全には正しくありません。SET ?別の機能でこの機能を使用できます?

構文は次のとおりです。

connection.query('UPDATE users SET ? WHERE UserID = ?', [{ Name: name }, userId])
于 2013-10-14T10:57:39.133 に答える
49

[注(2016-04-29を追加):この回答は受け入れられましたが、を使用する合理的な方法SET ?あることがわかりました。詳細については、この同じページのBalaClarkの回答を参照してください。—ruakh ]


のコードConnection.prototype.query()Connection.createQuery()から、単一の値オブジェクトのみを渡すことができることは明らかです。特別な動作のコードがどこにSET ?定義されているかはわかりません—明らかに含まれていませんSqlString.formatQuery()—しかし、それがSqlString.objectToValues()を使用している場合、別のコードと一緒に使用する方法はないと思い?ます。

最善のアプローチは、きちんとしたSET ?機能を省き、次のいずれかを書くことだと思います。

connection.query('UPDATE users SET Name = ? WHERE UserID = ?', [name, userId])
connection.query('UPDATE users SET Name = :Name WHERE UserID = :UserID',
                     {UserID: userId, Name: name})

しかし、本当に使いたいのならSET ?、これを書くことができると思います:

connection.query('UPDATE users SET ? WHERE UserID = :UserID',
                     {UserID: userId, Name: name})

UserIDとの両方を更新しNameます; トリガーがない限り、とにかくすでに持っていた値に更新されるという点で、これは問題ないはずです。UserIDしかし、それは一種の当惑であり、私はそれをお勧めしません。

于 2013-02-21T01:33:37.433 に答える
22

オブジェクトの配列を使用できます。

connection.query('UPDATE user SET ? WHERE ?', [{ Name: name }, { UserId: userId }])
于 2014-04-02T08:57:59.543 に答える
0

これは私のために働いたものです

 var records = 
 [name,email,adhar,ROLE,NOTES,REQUESTFORSUPPLIER,PASSWORD,LOCATION,CREATEDBY,CREATEDON,MODIFIEDBY,MODIFIEDON,mobile];

    var sql="UPDATE flavica_user SET Name=?,EMAIL=?,AADHAR=?,ROLE=?,NOTES=?,REQUESTFORSUPPLIER=?,PASSWORD=?,LOCATION=?,CREATEDBY=?,CREATEDON=?,MODIFIEDBY=?,MODIFIEDON=? WHERE USER_MOBILE=?"
    //var sql="UPDATE `flavica_user` SET ? WHERE ?";
    //this sql updates flavica_user
    con.query(sql,records,(err,result)=>{

      if(err){
        res.json({
          status:400,
          message:err
        })
      }

      else{
        res.json({
          status:200,
          message:result
        })
      }

    })
于 2018-09-22T07:18:17.527 に答える
0

ここに画像の説明を入力してください

let query_1 =  `UPDATE reindexing_status SET success="Failure" where status="In Progress"`;
await updateValues(db_connection,query_1);
 
if(lambdaInvokeStatusCode === 200)

{
   let query_1 =  `UPDATE reindexing_status SET success="Success" where status="In Progress"`;
   await updateValues(db_connection,query_1);
   
   let query_2 =  `UPDATE reindexing_status SET end_time='${indexedAt}' where status="In Progress"`;
   await updateValues(db_connection,query_2);
   
   let query_3 =  `UPDATE reindexing_status SET status="Complete" where status="In Progress"`;
   await updateValues(db_connection,query_3);
   

}



async function updateValues(db_connection,sql) {
await new Promise((resolve, reject) => {
    db_connection.query(sql, function (err, result) {
        if (err) {
            console.log(err);
            reject(err);
        }
        else {
           
            console.log("RDS Updated Successfully",result );
            resolve("RDS URL Column: " + JSON.stringify(result));
        }
    });
 
});
}
于 2021-04-16T02:59:44.173 に答える