나는 통과 할 수있는 곳에서 반복적으로 호출되는 함수를 가지고있다. 매개 변수가 "실제"(int/float) 숫자 인 경우 (즉, MySQL 쿼리에 전달 될 때 아무런 조작이나 따옴표를 추가하지 않음) 변수와 함수는 다르게 작동합니다. 현재 내 코드는 이중 유형 검사를 수행하지만 더 좋은 방법이 있습니까?숫자가 "실제"숫자 (int/float)인지 문자열 ("1"/ "1.2")인지 확인하는 가장 좋은 방법
$a = 1;
$b = '1';
$is_num = (is_numeric($a) && !is_string($a)); //true
$is_num = (is_numeric($b) && !is_string($b)); //false
더 빠른 방법이 있습니까? 예를 들어
(매우 단순화 된 버전) : 전화 번호는 정수가 항상 경우
이$query = 'SELECT * FROM `table` WHERE ';
$field = 'id';
$operator = '=';
$value = 2;
$query .= '`'.$field.'`'.$operator;
$is_num = (is_numeric($value) && !is_string($value));
if($is_num){
$query .=$value;
}else{
$query .='"'.mysql_real_escape_string((string)$value).'"';
}
$query .=';';
원하는 동작이 무엇인지 더 명확하게 설명 할 수 있습니까? 'if-then'을하려고하는 것입니까? 문자열 일 경우 한 가지만하고, 다른 경우는 int 일뿐입니다. – julio
왜 필요하면 숫자가되도록 강제하지 않는 것이 좋을까요? (또는 문자열이 선호되는 경우?) – Amber
은 쿼리 빌더입니다. 실제 숫자를 전달하면 문자열을 전달할 경우 (심지어 숫자 문자열) 따옴표를 추가해야합니다. 예를 들어'field = "1"로 된 쿼리가'field '의 타입에 따라'field = 1'을 가진 쿼리와 다르다면 – Fabrizio