如果收到的值为null,则插入值

时间:2017-05-26 19:09:19

标签: php mysql

所以,如果post收到的值为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>

在发送表单之后,表格的插图看起来像这样,如果有人选择&#34; ------&#34;它会分配空值。选项:

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

表格中填写的所有数据随后显示在表格的不同行中。 我现在需要的是,如果有人选择&#34; ------&#34;选项,屏幕中显示的值是&#34;没有catalogado&#34; 到目前为止,我还没能做到。 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

在插入发生之前,您可以在PHP端进行空检查。或者......您可以使用ISNULL()

中内置的SQL

您还可以在SQL中使用CASE语句来跨多个值完成此行为。

我知道这不是最冗长的答案,但它应该有用。

答案 1 :(得分:0)

这是你的要求吗?

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

请注意,您的代码非常脏,我甚至无法过滤和逃避收入值。尝试谷歌php mysql escape values