0

我目前正在修改一个开箱即用的 php/jQuery 自动建议脚本。我有以下问题:

我有两个带有自动建议的表单字段。第一个字段供用户输入城市。所以我的 php 文件autosuggest.php查询数据库并找到匹配项parent = 9(这是所有城市)。现在对于用户输入的第二个字段,school我希望我的 php 通过数据库查询并找到将输入城市作为父级的学校。

我试图通过将从 PHP 返回的字符串存储到 javascript(当用户输入城市时)到SESSION变量来解决这个问题。autosuggest.php然后在查询查找第二个表单的匹配项时将此会话变量用作父级。

但我无法让它工作。我收到此错误:

Catchable fatal error: Object of class mysqli_result could not be converted to string in

autosuggest.php on line 47 (LIKE '$queryString%').

但如果我注释掉或删除$parent = $termquery;.autosuggest.php

这是我的代码:

index.php 包含此脚本:

<?php session_start();?>
<script>

    var globEl = "";
    function suggest(inputString){
        var activeEle = document.activeElement.id;
        globEl = activeEle;
        if(inputString.length == 0) {
            $('#suggestions').fadeOut();
        } else if(activeEle == "city") {
            $('#city').addClass('load');
            $.post("autosuggest.php", {queryString: ""+inputString+""}, function(data){
                if(data.length >0) {
                    $('#suggestions').fadeIn();
                    $('#suggestionsList').html(data);
                    $('#city').removeClass('load');
                }
            });
        } else if(activeEle == "school") {
            $('#school').addClass('load');
            $.post("autosuggest.php", {queryString: ""+inputString+""}, function(data){
                if(data.length >0) {
                    $('#suggestions').fadeIn();
                    $('#suggestionsList').html(data);
                    $('#school').removeClass('load');
                }
            });
        }   
    }

    function fill(thisValue) {
        if (globEl == 'city') {
            $('#city').val(thisValue);
            $.post('update_session.php', {parentnamee: thisValue});
            setTimeout("$('#suggestions').fadeOut();", 0);
        } else if(globEl == 'school') {
            $('#school').val(thisValue);
            $.post('update_session.php', {parentnamee: thisValue});
            setTimeout("$('#suggestions').fadeOut();", 0);
        } 
    }


</script>

更新会话.php

<?php
    session_start();
    $_SESSION['foreldrenavnn'] = $_POST['foreldrenavnn'];
?>

自动建议.php

<?php
    session_start();
    $db_host = 'host';
    $db_username = 'user';
    $db_password = 'passw';
    $db_name = 'db';
    $parent = 9;

    $db = new mysqli($db_host, $db_username ,$db_password, $db_name);

if(!$db) {

    echo 'Could not connect to the database.';
} else {

    if(isset($_SESSION['parentnamee'])) {
        $parentstring = $db->real_escape_string($_SESSION['parentnamee']);

        if(strlen($parentstring) >0) {
            $termquery = $db->query("
            SELECT wp_terms.term_id
            FROM wp_terms
            WHERE wp_terms.name='$parentstring%'
            ");
            $parent = $termquery;
        }

    } else {
        // do nothing
    }

    if(isset($_POST['queryString'])) {
        $queryString = $db->real_escape_string($_POST['queryString']);

        if(strlen($queryString) >0) {
            $query = $db->query("
            SELECT wp_terms.name
            FROM wp_terms
            INNER JOIN wp_term_taxonomy
            ON wp_terms.term_id = wp_term_taxonomy.term_id
            AND wp_term_taxonomy.parent=$parent
            WHERE wp_terms.name
            LIKE '$queryString%'
            LIMIT 10
            ");

            if(mysqli_num_rows($query) > 0) {
                if($query) {
                echo '<ul>';
                    while ($result = $query ->fetch_object()) {
                        echo '<li onClick="fill(\''.addslashes($result->name).'\');">'.$result->name.'</li>';       
                    }   
                echo '</ul>';

                } else {
                    echo 'OOPS we had a problem :(';
                }
            } else {
                echo '<ul>';
                echo '<span style="color:#0196E3";>'.$queryString.'</span> no matches.';
                echo '</ul>';
            }   
        } else {
                // do nothing
            }
        } else {
            echo 'There should be no direct access to this script!';
        }
    }
?>

任何人有任何想法我做错了什么?非常感谢您的帮助!

4

0 回答 0