0

わかりました。最初にデータを選択し、列が100未満かどうかを確認しないと、不可能な質問がありますが、とにかく。これを行うためのより簡単な方法があることを望んでいるので、2つのクエリを実行する必要はありません。追加するものが100+未満の場合にのみ、列を更新したいと思います。

CIを使用しています:

$this->db->set('happiness', 'happiness + '.$amt['happiness'], FALSE);
$this->db->set('loyalty', 'loyalty + '.$amt['loyalty'], FALSE);
$this->db->set('hunger', 'hunger + '.$amt['hunger'], FALSE);
$this->db->where('id', $creature);
$this->db->update('user_creature');

問題は、幸福がすでに94になっている可能性があり、9を追加していることです。これにより103になります。しかし、私がそれを取得できるようにしたい最大値は100です。 100以上にするのではなく、100に更新するだけです。とにかくMySQL構文でそれを行うことができますか?何か機能はありますか?

今のところ、データを選択して、数学で100を超えるかどうかを確認する必要があると考えています。そうである場合は、100と入力し、そうでない場合は、そこにある方程式を実行します。

4

2 に答える 2

2

これは、MySQLのLEAST関数を使用して実行できます。CodeigniterのDB構文についてはあまり詳しくありませんが、プレーンPHPの考え方は次のとおりです。

$sql = "
    UPDATE user_creature
    SET happiness = LEAST(100, happiness + $amt[hunger])
    WHERE id = $creature
";
于 2013-03-11T18:46:11.803 に答える
0

WHERE句にも追加してみませんか?

 WHERE (happiness + {$amt['happiness']}) <= 100
于 2013-03-11T18:45:59.767 に答える