私はそれを得ることはありません...、私はname
、amount
とlevel
MySQLのテーブルのフィールドの値が
だから私は保存したいアレイを作成しresource
を持つテーブルを持っていますレベル別に各リソースに追加されたリソースの量。
は、例えば、私は100の量と、私は100
この量に2点を追加したいので、レベル1(resourceAの配列インデックス)のレベル1と自分のデータベースにResourceAを有します働いている:WHEN 'ResourceA' THEN amount + $resourceA[1]
これが動作していません。WHEN 'ResourceA' THEN amount + $resourceA[level]
$resourceA = array(0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024);
$resourceB = array(0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024);
$resourceC = array(0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512);
try {
$conn = new PDO("mysql:host=$servername;port=3307;dbname=$dbname",$username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE resource SET amount = CASE name
WHEN 'ResourceA' THEN amount + $resourceA[level]
WHEN 'ResourceB' THEN amount + $resourceB[level]
WHEN 'ResourceC' THEN amount + $resourceC[level]
END";
$conn->exec($sql);
echo "Updated successfully";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
$conn = null;
を誰かがリソース配列のインデックスとして、テーブルのフィールドlevel
を使用するために、私を助けることができますか?
更新:あなたの説明のためにこれがなぜ機能しないのか理解しています。ありがとうございました。
は、私は多分準備バインディングとトリックがあり、その後の穴列がWHEN 'ResourceA' THEN amount + $resourceA[1]
のように解釈され、
WHEN 'ResourceA' THEN amount + $resourceA[1]
が働いているともamount = amount + 2
が働いているので、それは私が使用することができ、働くだろうと思いましたステートメント内の数字としてのレベル。
おかげ
これは単なる不可能なことです。あなたは、SQLクエリがPHPではなくSQLサーバによって実行されることを認識していますか? –
レベルフィールドの値をphp変数にフェッチし、php変数をインデックスとして使用するか、リソースデータをMySQL内のテーブルにプッシュし、純粋なSQLを使用してマルチテーブル更新構文を使用して増加を計算する必要があります。 – Shadow
あなたの大丈夫、ありがとう、おそらく準備された拘束力のあるトリックがあります。 – Retterdesdialogs