没有属性,来自自动完成输入文本php jquery的结果

时间:2015-02-21 05:11:14

标签: php jquery mysql pdo

我不明白为什么查询不起作用,如果我尝试使用localhost工作正常但使用“mysql”,我尝试在我的网站中使用PDO而不是给出结果。我试着看看error_log我得到这样的错误

PHP Fatal error:  Call to a member function fetch() on a non-object in fungsi/f_record.php on line 9

这是我的来源 f_record.php

<?php
include "../config/c_config.php";
$db = dbConn::getConnection();

$uq = strtolower($_GET["term"]);
$return = array();
$sqlac= "SELECT * FROM str_user WHERE name LIKE '$uq'";
$resac = $db->query($sqlac);
while($resac = $sqlac->fetch(PDO::FETCH_ASSOC)){
    array_push($return,array('label'=>$resac['name'],'value'=>$resac['name']));
    }
    echo(json_encode($return));
?>

和index.php

    <script>
    $(function() {
        $( "#txtname" ).autocomplete({
            source: "f_record.php",
            minLength: 1
        });
    });
    </script>

</head>
<body>


<div>
    <label for="Name">Name: </label>
    <input id="txtname" class="txtname"/>
</div>

如何解决这个问题..

2 个答案:

答案 0 :(得分:0)

仔细阅读错误消息。

在非对象

上调用成员函数fetch()

您的代码中只有一个fetch()来电。它是$sqlac->fetch(PDO::FETCH_ASSOC)

$sqlac是一个字符串。您无法在fetch上致电string,因为它不是object

PHP reference

中介绍了这一点

答案 1 :(得分:0)

首先正确创建db句柄,我不确定&#34; $ db&#34;它是如何在你的代码中创建的,你没有提到dbconn :: getconnection()的代码。我用$ dbh替换了它。

    <?php
    include "../config/c_config.php";
    $db = dbConn::getConnection();
    *$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);*

    $uq = strtolower($_GET["term"]);
    $return = array();
    $sqlac = $dbh->prepare("SELECT * FROM str_user WHERE name LIKE '$uq'");
    $sqlac->execute();

    while($resac = $sqlac->fetch(PDO::FETCH_ASSOC)){
        array_push($return,array('label'=>$resac['name'],'value'=>$resac['name']));
        }
        echo(json_encode($return));
    ?>