Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php NOTNULL值的SELECT语句正在返回NULL值。_Php_Mysql - Fatal编程技术网

Php NOTNULL值的SELECT语句正在返回NULL值。

Php NOTNULL值的SELECT语句正在返回NULL值。,php,mysql,Php,Mysql,我有一段PHP代码,它使用$\u POST获取值,然后插入到数据库中。除了CU00等,所有字段都是基于输入的,因为它表示主键 现在假设用户只输入一行: $ sql="INSERT INTO weekly VALUES ('$_POST[uactual]','$_POST[utarget]','CU001','$a1','$_POST[ucomment]',NOW()) ,('$_POST[uactual2]','$_POST[utarget2]','CU002','$a2','$_POST[u

我有一段PHP代码,它使用
$\u POST
获取值,然后插入到数据库中。除了
CU00
等,所有字段都是基于输入的,因为它表示主键

现在假设用户只输入一行:

$ sql="INSERT INTO weekly
VALUES
 ('$_POST[uactual]','$_POST[utarget]','CU001','$a1','$_POST[ucomment]',NOW())
,('$_POST[uactual2]','$_POST[utarget2]','CU002','$a2','$_POST[ucomment2]',NOW())
,('$_POST[uactual3]','$_POST[utarget3]','CU003','$a3','$_POST[ucomment3]',NOW())
,('$_POST[dactual]','$_POST[dtarget]','CD001','$b1','$_POST[dcomment]',NOW())
,('$_POST[dactual2]','$_POST[dtarget2]','CD002','$b2','$_POST[dcomment2]',NOW())
,('$_POST[dactual3]','$_POST[dtarget3]','CD003','$b3','$_POST[dcomment3]',NOW())
,('$_POST[iactual]','$_POST[itarget]','CI001','$c1','$_POST[icomment]',NOW())
,('$_POST[iactual2]','$_POST[itarget2]','CI002','$c2','$_POST[icomment2]',NOW())
,('$_POST[iactual3]','$_POST[itarget3]','CI003','$c3','$_POST[icomment3]',NOW())
,('$_POST[ractual]','$_POST[rtarget]','CR001','$d1','$_POST[rcomment]',NOW())
,('$_POST[ractual2]','$_POST[rtarget2]','CR002','$d2','$_POST[rcomment2]',NOW())
,('$_POST[ractual3]','$_POST[rtarget3]','CR003','$d3','$_POST[rcomment3]',NOW())";
SQL表

ACTUAL|TARGET|KEY |SIGNAL |TIME 
NULL    NULL  CU001 NULL   00:00
NULL    NULL  CU002 NULL   00:00
NULL    NULL  CU003 NULL   00:00
NULL    NULL  CU004 NULL   00:00
100      200  CU005  300   00:00
我想做一个选择,只选择带有信号的行。但是当我做一个

   SELECT *
    FROM TABLE
    WHERE 
    'signal' IS NOT NULL
我得到了所有的行返回。就好像我的表中没有空值一样

   SELECT *
    FROM TABLE
    WHERE 
    signal IS NOT NULL
'signal'
只是字符串文字,实际上
不是NULL

您的意思可能是“而不是”。

您没有插入任何空值。您最多只能插入空字符串


此外,您应该对输入进行一些验证。

您正在将空字符串放入数据库中

这样做:

(empty($_POST['uactual']) ? 'NULL' : '\'' . $_POST['uactual'] . '\'')
对于所有
$\u POST
变量。然后您可以确定将有空值

请不要这样做:
$\u POST[uactual]
!PHP将首先搜索已定义的val!请务必使用“始终”
$\u POST['uactual']

而且,您的选择是错误的不是。如果您不相信,请执行以下查询:

SELECT 'signal' FROM TABLE
这是正确的:

SELECT `signal` FROM TABLE or
SELECT signal FROM TABLE
这将返回字符串'signal',而不是'signal'列

 WHERE 
    'signal' IS NOT NULL

这将始终是
正确的
!这就是它返回整个数据的原因。你在插入和选择数据时犯了两个错误:】。

@saivgnesh no,
'signal'
是string,而不是int。我无法在下面的帖子中添加注释,但下面的答案是错误的。字符串周围的引号是不需要的,MySQL不会将其理解为字符串,而是将其理解为列名。您正在插入字符串-您需要验证输入,并在适当的情况下将空字符串转换为空字符串。哦,插入数据时如何过滤空字符串。我在上面贴了空的()部分。sql中的“和”之间有很大的区别是字符串`是表!我在inseret bcos之前做过这件事,这是信号列,但从未工作过,我现在是否应该更改SQL我在inseret bcos之前做过这件事,这是信号列,但从未工作过,我现在是否应该更改SQL,无论您将在何处执行此操作。插入字符串应包含:NULL(不带“”)或“somestring”(带“”)或888(如果应该是数字,则不带“”。你也可以做(int)$x。然后您将确保该值为整数(如果不是数字字符串,则为0)。我会同时做(int)+empty:
empty($x)?NULL:(int)$x
希望这有帮助。致命错误:调用未定义的函数int()
SELECT*从信号不为NULL的表中
without'。如果像应该的那样插入空值。在其他情况下,
WHERE信号!=''
其中的信号!=0
或甚至一次全部
,其中信号不为空且信号!=''还有信号!=0。为了纠正我的答案,旅鼠19:)使用了一个isset。。。现在效果很好