Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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 空后错误_Php_Jquery_Pdo - Fatal编程技术网

Php 空后错误

Php 空后错误,php,jquery,pdo,Php,Jquery,Pdo,我需要让脚本检测post是否为空,以便它将post错误。 现在,当我的帖子为空时,它会发布所有结果 我的代码 $query = $db->prepare("SELECT `media`.`id`, `media`.`title` FROM `media` WHERE `media`.`title` LIKE :keywords"); $keywords = (isset($_POST['keywords']) === true) ? $_POST['keywords'] : ''; $q

我需要让脚本检测post是否为空,以便它将post错误。 现在,当我的帖子为空时,它会发布所有结果

我的代码
$query = $db->prepare("SELECT `media`.`id`, `media`.`title` FROM `media` WHERE `media`.`title` LIKE :keywords");

$keywords = (isset($_POST['keywords']) === true) ? $_POST['keywords'] : '';
$query->bindValue(':keywords', '%' . $keywords . '%', PDO::PARAM_STR);

$arr = array();
$query->execute();
while( $row = $query->fetch(PDO::FETCH_ASSOC) ) {
    $arr[] = array( "id" => $row["id"], "title" => $row["title"]);
}
echo json_encode( $arr );

?>
还有我的剧本

$(document).ready(function(){
    $(".search").click(function(){
        $.post("search.php", { keywords: $(".keywords").val() }, function(data){
            $("div#search").empty()
            $.each(data, function(){
                $("div#search").append("- <a href='#?id=" + this.id + "'>" + this.title + "</a><br>");
            });
        }, "json");
    });
});
$(文档).ready(函数(){
$(“.search”)。单击(函数(){
$.post(“search.php”,{keywords:$(“.keywords”).val()},函数(数据){
$(“div#search”).empty()
$.each(数据,函数(){
$(“div#search”)。追加(“-
”); }); }“json”); }); });
添加以下内容:

if(empty( $keywords ) ) {
     // Show some error
}
else{

   // your search code here ...
}

但最好在发布前也在JS中进行检查

验证应始终在服务器端进行。JS也可能很好,但你永远不应该依赖客户端的友好和防止你的“坏”行为。我没有说他应该依赖它,但我的意思是额外这样做是为了避免服务器端处理,没有任何理由。这很公平。你的粗体大文本上写着“它是首选的”,而不是这样的;您可能需要编辑您的答案,以防有人误解。:)我在粗体部分添加了“too”:D:DCan我可以说,每当我看到像
isset($\u POST['keywords'])===true这样的结构时,我都会畏缩。人们似乎害怕任何不包含关键字
true
false
的布尔表达式……这就是php。据我们所知,
isset
在布尔上下文中强制转换为香蕉。@Eevee