0

id、column1、column2 の 3 つの列を持つテーブルがあるとします。URLリクエストで「column1」パラメーターを受け取ったときにcolumn1を更新したい場合は、URLアドレスで「column2」パラメーターを受け取ったときにcolumn2を更新します。それは可能ですか?私はそれを作りましたが、それは正しくないと思います:

$sql= "UPDATE people SET 
answer_yes= '$answer_yes'+1,
answer_no='$answer_no'+1";

助けてくれてありがとう。

編集:これで機能しました(リチャードビビアンの回答に基づく)

    If($answer_yes==1)
{

    $sql= "UPDATE people SET answer_yes= answer_yes +1"or die(mysql_error());
    mysql_query($sql);
    }
    else if ($answer_no==0)
    {
    $sql= "UPDATE people SET answer_no= answer_no+1" or die(mysql_error());
    mysql_query($sql);
    }
4

3 に答える 3

2

使用しているデータベース モデルはわかりNULLませんが、渡す値がない場合は値を渡し、更新する前に値が null でないことを確認するというロジックになります。

SQLサーバー

UPDATE Table
SET Column1=ISNULL(@Column1,Column1),
    Column2=ISNULL(@Column2,Column2)

MySQL

UPDATE Table
SET Column1=IFNULL($Column1,Column1),
    Column2=IFNULL($Column2,Column2)

ここで起こっているのは、ISNULL/IFNULL渡された最初の値が であるかどうかをチェックしNULL、そうである場合は 2 番目の値を返すことです。2 番目の値は現在の値と同じ値であるため、同じ値で更新します (つまり、値を変更しません)。

于 2012-11-22T11:29:42.343 に答える
2

2 つの SQL ステートメント オプションを作成できます。

If($answer_yes)
{
$sql= "UPDATE people SET answer_yes= '$answer_yes'+1"
}
else
{
$sql= "UPDATE people SET answer_no= '$answer_no'+1"
}
于 2012-11-22T11:31:30.897 に答える
1

あなたはこれを行うことができます:

UPDATE people 
SET answer_yes = COALESCE($answer_yes + 1, answer_yes),
    answer_no  = COALESCE($answer_no + 1, answer_no);

は、渡された値の最初の不可能な値を返しCOALESCEます。NULLいずれかのパラメータ$answer_yesまたはに値$answer_noが渡された場合、およびも評価され、 は列の値を返します。この場合、列はその値で更新されます。つまり、値は変更されません。NULL$answer_yes + 1$answer_no + 1NULLCOALESCE

于 2012-11-22T11:28:54.400 に答える