0

というテーブルがありますdircode

CREATE TABLE dircode (
  jobcodeid int(11) NOT NULL AUTO_INCREMENT,
  jobcodeserial varchar(255) NOT NULL,
  jobcode1 varchar(255) NOT NULL,
  codestatus1 varchar(60) NOT NULL,
  jobcode2 varchar(255) NOT NULL,
  codestatus2 varchar(60) NOT NULL,
  jobcode3 varchar(255) NOT NULL,
  codestatus3 varchar(60) NOT NULL,
  jobcode4 varchar(255) NOT NULL,
  codestatus4 varchar(60) NOT NULL,
  PRIMARY KEY (jobcodeid)
)

ユーザーは、1 つのシリアル番号に対して最大 4 つのジョブ コードを持つことができます。ユーザーが dir シリアル番号と 1 つのコードを入力すると、その特定のジョブcodestatusが に更新され'Used'ます。残りのデータはそのままにしておく必要があります。たとえば、ユーザーがシリアル番号を入力するとjobcode3、 のステータスがcodestatus3に更新され'Used'ます。上記のクエリの PHP コードを書くのを手伝ってください。

4

1 に答える 1

0

あなたが言ったように、行を更新する必要があります。

最初に入力されたコードが 1、2、3、または 4 (例: jobcode3) であるかどうかを確認し、次にそのコードのステータスを設定しようとしています (この場合はcodestatus3)。それを行うには、行全体を連想配列として取得し、コードでインデックスを見つけます (各ジョブコードを確認し、コードを見つけて、列名からインデックスを抽出します)。

次に、MySQL サーバーに接続し、次のようなクエリを実行します。

$columName = "codestatus" . $theCorrectIndex;
mysql_query(sprintf("UPDATE dircode SET %s = 'Used' WHERE jobcodeid = %d",
                      $columName,$dircodeId));

ブール値の戻り値を確認してください。である場合は、エラーの詳細をfalse調べます。

(または、これらすべてを SQL クエリ内に配置することもできます。この質問またはこれと MySQL の制御フロー関数を参照してください。)

これはあまり良い解決策ではありません。codescolumns と外部キー column を使用して別のテーブルをid作成statusすることdircode_idを検討して、列名にインデックスを入れないようにすることをお勧めします (通常は良い考えではありません)。

また、これに関する多くのドキュメントがあります ( MySQLPHPSO )。

于 2012-07-07T13:06:52.820 に答える