Maison  >  Questions et réponses  >  le corps du texte

Erreur : MySQL - l'opérande doit contenir 1 colonne.

<p>Cette requête fonctionne lorsque je la tape directement dans MySQL, mais pas en C#. </p> <pre class="brush:php;toolbar:false;">double deltaTime = (DateTime.Now - collectTime).TotalSeconds; string query = String.Format("MISE À JOUR des bâtiments LEFT JOIN server_buildings ON bâtiments.global_id = server_buildings.global_id ET bâtiments.level = server_buildings.level SET bâtiments.storage = bâtiments.storage + (server_buildings.speed * {0} * IF(bâtiments .boost >= MAINTENANT(), 2, 1)) WHERE batiments.global_id IN('generator', 'test')", deltaTime / 3600d);</pre> <p>Je viens de recevoir l'erreur MySQL - l'opérande doit contenir 1 colonne. Merci pour la suggestion! :)</p><p>La valeur du « stockage » devrait augmenter au fil du temps. </p><p><br /></p>
P粉529245050P粉529245050453 Il y a quelques jours437

répondre à tous(1)je répondrai

  • P粉710454910

    P粉7104549102023-07-25 11:53:11

    Je suis relativement nouveau sur MySQL. Il s'agit d'une requête avec des paramètres.

    string query = String.Format("UPDATE buildings JOIN server_buildings ON buildings.global_id = server_buildings.global_id AND buildings.level = server_buildings.level SET buildings.storage = buildings.storage + (server_buildings.speed * ?Num * IF(buildings.boost >= NOW(), 2, 1)) WHERE buildings.global_id IN('generator', 'test')");
                         
                using (MySqlCommand command = new MySqlCommand(query, connection))
                {
                    MySqlParameter param = new MySqlParameter("?Num", (deltaTime / 3600d));
                    command.Parameters.Add(param);
          
                   command.ExecuteNonQuery();
                }

    répondre
    0
  • Annulerrépondre