所以,如果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; 到目前为止,我还没能做到。 任何人都可以帮助我吗?
答案 0 :(得分:0)
在插入发生之前,您可以在PHP端进行空检查。或者......您可以使用ISNULL()
您还可以在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
。