Php检查变量是数字还是数字字符串

Php检查变量是数字还是数字字符串,php,Php,我有两个POST变量,可以是纯字符串或数字字符串,在这两种情况下,我的程序都要执行不同的任务,但最大的问题是php似乎不能给我正确的结果,至少我认为,我有4个条件和两个变量$\u POST['category']和$\u POST['location'],其中一个都是数字字符串,两个都是,另一个不是,最后,当两者都只是字符串时,下面是我的代码: $_POST['category'] = '231'; $_POST['location'] = 'test query'; if(isset($_

我有两个
POST
变量,可以是
纯字符串
数字字符串
,在这两种情况下,我的程序都要执行不同的任务,但最大的问题是
php
似乎不能给我正确的结果,至少我认为,我有4个条件和两个变量<代码>$\u POST['category']和
$\u POST['location']
,其中一个都是数字字符串,两个都是,另一个不是,最后,当两者都只是字符串时,下面是我的代码:

$_POST['category'] = '231';
$_POST['location'] = 'test query';

 if(isset($_POST['location']) && isset($_POST['category'])){


  $categoryQuery = "%{$_POST['category']}%"; 
  $locationQuery = "%{$_POST['location']}%"; 


//case 1
if(is_numeric($categoryQuery) == FALSE && is_numeric($locationQuery) == FALSE){

echo '1-';
}

//case 2
if(is_numeric($categoryQuery) == TRUE && is_numeric($locationQuery) == FALSE){
   echo '2-';
  }

//case 3
 if(is_numeric($categoryQuery) == FALSE && is_numeric($locationQuery) == TRUE){
   echo '3-';
}

//case 4
if(is_numeric($categoryQuery) == TRUE && is_numeric($locationQuery) == TRUE){
 }

 }
但是无论每次执行案例1时两个变量的值是多少,有人知道我如何通过这个问题吗

我是一名全职java/Android开发人员,所以我的逻辑可能不正确。这是什么

$categoryQuery = "%{$_POST['category']}%";
$locationQuery = "%{$_POST['location']}%"; 
试试这个

$categoryQuery = $_POST['category'];
$locationQuery = $_POST['location']; 
您正在检查它是否是一个数字,但在您的第一个版本中,它将永远不会是一个数字

您的代码如下:

$categoryQuery = "%{$_POST['category']}%"; 
$locationQuery = "%{$_POST['location']}%"; 

导致您的测试失败。在测试变量是否为数字之前,您正在用
%
标记(表面上是用于SQL查询)包装变量。用这些标记包装,变量将始终作为字符串进行计算。

您的var
$categoryQuery
将永远不会是带有
%
标记的数字。谢谢,我对我的代码做了太多的修改,以至于我忘了删除%add this作为我接受的答案。因此,如果测试为假和/或真,更明智的比较可能是使用
==
而不是
=
。但是是的,正如其他人指出的,在为DB搜索添加
%%
之前进行检查。