여러 매개 변수가 있는 PHP isset()
AJAX 오토콤플릿으로 작업하려고 하는데 두 언어가 시너지 효과를 발휘하는데 몇 가지 문제가 있습니다.
모든 이슈를 $_POST 1개로 교체하면 아래의 스니펫이 동작합니다만, $_POST를 하나 더 추가하면 5번째 줄에 오류가 나타납니다.
<?php
require_once '../Configuration.php';
if (isset($_POST['search_term'] . $_POST['postcode']) == true && empty ($_POST['search_term'] . $_POST['postcode']) == false) {
$search_term = mysql_real_escape_string($_POST['search_term'] . $_POST['postcode']);
$query = mysql_query("SELECT `customer_name`,`postcode` FROM `Customers` WHERE `customer_name` LIKE '$search_term%' ");
while(($row = mysql_fetch_assoc($query)) !== false) {
//loop
echo '<li>',$row['customer_name'] . $row['postcode'] '</li>';
}
}
?>
왜 이 오류를 발생시키는지에 대한 조언은 매우 감사할 것입니다.감사해요.
mysqli를 사용해야 한다는 것을 알고 있습니다.먼저 논리를 파악하려고 합니다:)
Js:
Primary.js:
$(document).ready(function() {
$('.autosuggest').keyup(function() {
var search_term = $(this).attr('value');
var postcode = $_GET['postcode'];
//alert(search_term); takes what is typed in the input and alerts it
$.post('ajax/search.php', {search_term:search_term, postcode:postcode}, function (data) {
$('.result').html(data);
$('.result li').click(function() {
var result_value = $(this).text();
$('.autosuggest').attr('value', result_value);
$('.result').html('');
});
});
});
});
매개 변수:isset()
는 변수 참조여야 하며 식(이 경우 연결)이 아닙니다.다만, 다음과 같이 복수의 조건을 그룹화할 수 있습니다.
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
이것은 돌아올 것이다.true
모든 논거가 할 경우에만isset()
설정되며 포함되지 않습니다.null
.
주의:isset($var)
그리고.isset($var) == true
같은 효과가 있기 때문에 후자는 다소 장황합니다.
갱신하다
두 번째 표현은empty()
다음과 같습니다.
empty ($_POST['search_term'] . $_POST['postcode']) == false
이것은 위와 같은 이유로 잘못된 것입니다.사실, 당신은 그 일을empty()
이 경우 변수가 설정되어 있는지 여부를 이미 확인했으므로 다음과 같이 전체 식을 단축할 수 있습니다.
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
또는 동등한 표현을 사용합니다.
!empty($_POST['search_term']) && !empty($_POST['postcode'])
마지막 생각
를 사용하는 것을 검토해 주십시오.filter
입력 관리 기능:
$data = filter_input_array(INPUT_POST, array(
'search_term' => array(
'filter' => FILTER_UNSAFE_RAW,
'flags' => FILTER_NULL_ON_FAILURE,
),
'postcode' => array(
'filter' => FILTER_UNSAFE_RAW,
'flags' => FILTER_NULL_ON_FAILURE,
),
));
if ($data === null || in_array(null, $data, true)) {
// some fields are missing or their values didn't pass the filter
die("You did something naughty");
}
// $data['search_term'] and $data['postcode'] contains the fields you want
한편, 필터를 커스터마이즈 해, 송신된 값의 다양한 부분을 확인할 수 있습니다.
의 파라미터isset()
콤마 기호( )로 구분해야 합니다).,
( )는 점 기호( )가 아닙니다..
현재 코드는 변수를 별도의 매개 변수로 전달하는 대신 단일 매개 변수로 연결합니다.
원래 코드는 변수를 통합한 것으로 평가합니다.string
값:
isset($_POST['search_term'] . $_POST['postcode']) // Incorrect
올바른 형식은 변수로서 이들을 개별적으로 평가합니다.
isset($_POST['search_term'], $_POST['postcode']) // Correct
필요한 것은 다음과 같습니다.
if (!empty($_POST['search_term']) && !empty($_POST['postcode']))
isset && !empty
용장성이 있습니다.
php의 사용OR (||)
php의 논리 연산자isset()
예를 들어 다중 연산자가 있는 경우
if (isset($_POST['room']) || ($_POST['cottage']) || ($_POST['villa'])) {
}
언급URL : https://stackoverflow.com/questions/14476609/php-isset-with-multiple-parameters
'source' 카테고리의 다른 글
wordpress Rest API에서 wp_head 또는 wp_footer를 outuput합니다. (0) | 2023.03.18 |
---|---|
Angular's $watch를 컨트롤러에 사용하는 것은 반향기입니까? (0) | 2023.03.18 |
이 코드에서 "it" 함수는 무엇을 합니까? (0) | 2023.03.18 |
모델에 부울 값을 할당하는 방법 (0) | 2023.03.18 |
React.js에서의 버블링 및 캡처 예시 (0) | 2023.03.18 |