Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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 Oracle:匹配表达式,如果表达式为null,则返回该列的所有记录_Php_Sql_Oracle - Fatal编程技术网

Php Oracle:匹配表达式,如果表达式为null,则返回该列的所有记录

Php Oracle:匹配表达式,如果表达式为null,则返回该列的所有记录,php,sql,oracle,Php,Sql,Oracle,我有一个搜索表单,用户可以在其中搜索数据库中的某些字段。如果字段留空,则可以匹配任何内容,包括null。如果在字段中输入了内容,则应与该字段匹配,包括通配符 我使用php作为服务器端语言 问题是,如果搜索字段为空,我不能只使用php并将其转换为“%”,因为它将不匹配null。(假设where子句与$value类似)。此外,我不能使用“fieldA like$value或fieldA为NULL”,因为这样它将返回所有匹配的字段和NULL字段 在SQL语句中是否有一种(相当简单的方法)实现这一点?目

我有一个搜索表单,用户可以在其中搜索数据库中的某些字段。如果字段留空,则可以匹配任何内容,包括null。如果在字段中输入了内容,则应与该字段匹配,包括通配符

我使用php作为服务器端语言

问题是,如果搜索字段为空,我不能只使用php并将其转换为“%”,因为它将不匹配null。(假设where子句与$value类似)。此外,我不能使用“fieldA like$value或fieldA为NULL”,因为这样它将返回所有匹配的字段和NULL字段


在SQL语句中是否有一种(相当简单的方法)实现这一点?目前,我在PHP中构建where子句,它相当麻烦。

您尝试的解决方案是检查错误的项的可空性

如果参数为NULL,则需要一条记录始终生成TRUE;如果字段与参数匹配,则需要一条记录始终生成TRUE

WHERE
  fieldA LIKE $value
  OR $value IS NULL
如果字段留空,则可以匹配任何内容,包括null

那么,在这种情况下,为什么不一起省略where子句呢

case 1: user enters "ABC"

select * from my_table where fieldA like 'ABC%';

case 2: user leaves blank

select * from my_table;
顺便说一句,小心SQL注入