2017-05-26 13 views
0

したがって、postで受け取った値がnullの場合は、テーブル行に特定の値を表示しようとしています。 は、これまでのところ私は(それはスペイン語です)私の小さなデータベースとしてこれを持っている:受信した値がnullの場合は値を挿入します

DROP DATABASE IF EXISTS fantasmas; 
CREATE DATABASE fantasmas; 
USE fantasmas; 

CREATE TABLE tipos(
ID tinyint(2) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
TIPO VARCHAR(45) UNIQUE 
); 

CREATE TABLE datos(
ID tinyint(2) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
NOMBRE VARCHAR(50) NOT NULL, 
ARCHIVO VARCHAR(30), 
AVISTAMIENTO VARCHAR(50) NOT NULL, 
LOCALIDAD VARCHAR(50) NOT NULL, 
INFO VARCHAR(200), 
FKTIPOS TINYINT(2) UNSIGNED, 
FOREIGN KEY (FKTIPOS) REFERENCES tipos(ID) 
); 

INSERT INTO tipos (TIPO) VALUES('Vapor'), ('Forma Animal'), ('Forma Humanoide'), ('Dios/Semidios'),('No Catalogado'); 

「tipos」にそれらの挿入された値は、このようなオプションであったされています

<select name="tipos"> 
    <option value="sintipo">---------</option> 
     <?php 
      while($row = mysqli_fetch_assoc($rta)): 
      $tipo = $row['TIPO']; 
      echo '<option value="'.$row['ID'].'">'.$tipo.'</option>'; 
      endwhile; 
     ?> 
</select> 

後、とき

$query = "INSERT INTO datos SET NOMBRE='$nombre', AVISTAMIENTO='$lugar', LOCALIDAD='$localidad', INFO='$info', ARCHIVO='$ruta', FKTIPOS = NULLIF('$tipo','sintipo')"; 

形で満たされたすべてのデータは、その後、次のとおりです。フォームは次のようになり、誰かが「------」オプションを選択した場合、それはnull値を代入し、テーブルに、インセットを送られ、 diffeで示されたテーブルの家賃の列。 私が今必要とするのは、誰かが "------"オプションを選択した場合、画面に表示される値は "カタログなし"です これまでのところ私はそれを行うことができませんでした。 誰でも助けてくれますか?

+0

最後のクエリ$ queryでは、$ tipoを一重引用符で囲むべきではありません。 '$ tipo'のように$ tipoを置かないとうまくいきません! –

+0

SQLがクエリで$ paramsをエスケープしてください。表示されているコードはSQLインジェクションが発生する可能性があります。これは本当に大きなリスクです – Roberto

答えて

0

挿入が行われる前に、PHP側でヌルチェックを行うことができます。または...あなたはSQLの組み込みを使用することができますISNULL()

CASEステートメントをSQLで使用して、複数の値にわたってこの動作を実行することもできます。

これはもっとも長い回答ではありませんが、うまくいくはずです。

0

これはあなたの求めるものですか?

$query = "INSERT INTO datos SET NOMBRE='$nombre', AVISTAMIENTO='$lugar', LOCALIDAD='$localidad', INFO='$info', ARCHIVO='$ruta', FKTIPOS = " . ($tipo == 'sintipo' ? 'NULL' : "'$tipo'"); 

あなたが非常に汚れたコードを持っていることに注意してください。収入値をフィルタリングしたりエスケープしたりすることはありません。 google php mysql escape valuesを試してください。

関連する問題