Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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数据库ajax未更新_Php_Jquery_Ajax_Pdo - Fatal编程技术网

PHP数据库ajax未更新

PHP数据库ajax未更新,php,jquery,ajax,pdo,Php,Jquery,Ajax,Pdo,不久前,我用ajax和php制作了一个搜索函数。您可以用文本填充文本框,它将尝试在数据库中存储的所有国家中查找匹配项。 现在我正在改进代码并使其成为PDO,但我破坏了一些东西,我无法找到什么 这是我的纯HTML <head> <title>Ajax</title> <link href="style/style.css" rel="stylesheet" type="text/css" /> <link rel="st

不久前,我用ajax和php制作了一个搜索函数。您可以用文本填充文本框,它将尝试在数据库中存储的所有国家中查找匹配项。 现在我正在改进代码并使其成为PDO,但我破坏了一些东西,我无法找到什么

这是我的纯HTML

<head>
    <title>Ajax</title>
    <link href="style/style.css" rel="stylesheet" type="text/css" />
    <link rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript" src="scripts/Javascript.js"></script>
</head>

<body>
    <div id="main">
            <h1 class="title">Enter your country please</h1>

        <input type="text" id="search" autocomplete="off" onchange="">
            <h4 id="results-text">Showing results for: <b id="search-string">Array</b></h4>

        <ul id="results"></ul>
    </div>
</body>
这是我的Search.PHP

<?php
class SearchEngine{

    private $html;

    public function __construct($conn){

        $this->html = '<li class="result">
                            <h3>NameReplace</h3>
                            <a target="_blank" href="ULRReplace"></a>
                        </li>';

        if (isset($_POST["query"])) {
            $search_string = mysql_real_escape_string($search_string);
        }

        else{
            $search_string = 'b';
        }

        if (strlen($search_string) >= 1 && $search_string !== ' ') {

            $query = 'SELECT * FROM country WHERE name LIKE "%' . $search_string . '%"';
            $result = $conn->prepare($query);
            $result->execute();
            $result_array = $result->fetchAll();

                foreach ($result_array as $result) {
                    $display_name = preg_replace("/" . $search_string . "/i", "<b>" . $search_string . "</b>", $result['name']);
                    $display_url = 'sadf';

                    $output = str_replace('NameReplace', $display_name, $this->html);
                    $output = str_replace('ULRReplace', $display_url, $output);
                    echo($output);
                }
        }
    }

    }
?>

您真的要将搜索字符串发布到PHP类吗

这不是它的工作方式,您需要创建该类的实例并使用它

为该类创建一个单独的php文件,并将其包含在
search.php

您可以创建一个如下所示的简单类:

search\u engine.php

<?php
class SearchEngine{

    private $conn;

    function __construct($conn){
        $this->conn = $conn;
    }

    function get_search_results($search_string){
        $query = 'SELECT * FROM country WHERE name LIKE :search';
        $result = $this->conn->prepare($query);
        $result->execute(array(':search'=>'%'.$search_string.'%'));
        $result_array = $result->fetchAll();

        return $result_array;   
    }
}
?>
if (isset($_POST["query"])) {
    $search_string = $_POST["query"];
    if(strlen($search_string) >= 1 && $search_string !== ' ') {
        include 'search_engine.php'
        $engine = new SearchEngine($conn);
        $results = $engine->get_search_results($search_string);
        foreach($results as $result){
          //do something
        }
    }
}

如果您
var\u dump($\u POST)-是否显示任何内容?如果您尝试手动导航到更新SQL的PHP页面,会发生什么情况?我无法var_转储帖子,因为它从未被创建过。我测试了javascript.js,调用了其中的函数,但没有执行它们应该执行的操作。手动导航到PHP页面是什么意思?@KrijnvanderBurg这个问题你还需要帮助吗?我又问了10分钟这个问题,问题就解决了。但现在我有另一个问题。它返回HTML两次。但是你的回答中提到我的代码还有其他一些缺陷,所以我会调查一下。
if (isset($_POST["query"])) {
    $search_string = $_POST["query"];
    if(strlen($search_string) >= 1 && $search_string !== ' ') {
        include 'search_engine.php'
        $engine = new SearchEngine($conn);
        $results = $engine->get_search_results($search_string);
        foreach($results as $result){
          //do something
        }
    }
}