0

デフォルト値が選択されているドロップダウンリストがあります。そこに値がある場合、if ステートメントはデータの更新を許可します。値がない場合は、代わりに行全体が挿入されます。3 番目の値を 1 にハード コードすると機能します。ただし、これを$category_of_taxom1挿入に設定すると機能しません。更新は正常に機能するため、DB 内に手動でレコードを作成すると、以下に示す更新 SQL を介して更新できます。しかし、私が INSERT を試してみると、うまくいきませんか? (挿入する最初の 3 つの項目をハードコーディングしました。3 番目は上記の変数である必要があります。

私はこの選択リストを持っています

      <select name="categorySelect1fromDB" >
<option value ="">EMPTY</option>';
      <option value="1" <?php echo ($category_of_taxom1 == 1)?"selected":""; ?>>A</option>
      <option value="2" <?php echo ($category_of_taxom1 == 2)?"selected":""; ?>>B</option>
      <option value="3" <?php echo ($category_of_taxom1 == 3)?"selected":""; ?>>C</option>
      <option value="4" <?php echo ($category_of_taxom1 == 4)?"selected":""; ?>>D</option>
</select> 

そして、この一連のステートメント。

  if(isset($_POST['save']))
 {  
                  $category_of_taxom1 = $_POST['categorySelect1fromDB'];
                  $number_of_taxom1 = $_POST['number_of_taxom1'];

 if (!empty($category_of_taxom1)){ //This is the value fromDB if not empy then do below else do last

            pg_query("UPDATE record_tbl SET category_of_taxom ='$category_of_taxom1', number_of_taxom ='$number_of_taxom1' WHERE sheet_id = '$sheet_id' AND line = 1");
            echo "Updated!";

    } else 
            {

            pg_query("INSERT INTO record_tbl (line, taxom_id, category_of_taxom, number_of_taxom, sheet_id) VALUES (1,1,'$category_of_taxom1','$number_of_taxom1','$sheet_id')");

            echo "New Record ?Saved!";
}
}   

これは、私のサイトの他の場所で使用する動作中の pgsql 行の例です。

  $sql8 = "INSERT INTO record_tbl (line, taxom_id, category_of_taxom, number_of_taxom, sheet_id) VALUES (8,8,'$_POST[gammarus_numbers]','$_POST[countgammarus]','$sheetid')";
  $result = pg_query($sql8);
4

2 に答える 2

0

フィールド「category_of_taxom」のデータ型は varchar に設定されている可能性が高く、INSERT を使用する場合は値を引用符で囲む必要があります。したがって、次のいずれかを実行できます。

1) データベースで、category_of_taxom のデータ型を整数に変更します。

2) INSERT ステートメントの値を引用符で囲みます。

('1','1','1','$number_of_taxom1',$sheet_id)

関連ドキュメント: mysql - 数字を引用するかどうか?

于 2013-08-08T14:41:19.103 に答える
0

この質問はおそらく削除する必要があります。引用符は正しかったので、変数ごとに必要でした。ただし、コードが長すぎて、ここにすべてを掲載できませんでした。誤ってその変数を 2 回呼び出してしまいました。したがって、ある時点では何かが含まれていますが、同じコード内ではそうでない場合もあります。そのため、変数の名前を変更する必要がありました。本当に良い答えではありませんが、とにかく削除します。これは他の人にとっては狭すぎるためです。

于 2013-08-08T15:15:59.727 に答える