gpt4 book ai didi

PHP isset() 带有多个参数

转载 作者:IT老高 更新时间:2023-10-28 23:46:16 25 4
gpt4 key购买 nike

我正在尝试使用 AJAX 自动完成功能,但在让两种语言协同工作时遇到了一些问题。

当我只用 1 个 $_POST 替换所有 issets 时,下面的代码段将起作用,但是通过添加另一个 $_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

顺便说一句,您可以自定义过滤器来检查提交值的各个部分。

关于PHP isset() 带有多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14476609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com