首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在数组中找不到方法'fetch_assoc‘-错误,我该如何修复它?

在数组中找不到方法'fetch_assoc‘-错误,我该如何修复它?
EN

Stack Overflow用户
提问于 2019-04-10 00:16:37
回答 2查看 138关注 0票数 0

我正在尝试从数据库中检索信息,并将其放入PHP和HTML格式的表中。然而,我遇到了一个问题,它显示我遇到了一个错误:

致命错误:未捕获错误:函数名必须是F:\Client Server\Website\campsites.php:41堆栈跟踪中的字符串:#0 {main}引发

当我检查错误所在的行时,它显示:

在数组中找不到

方法'fetch_assoc‘

我该如何解决这个问题呢?

代码语言:javascript
复制
if($_SERVER['REQUEST_METHOD'] == 'POST'){

    $search = $_POST['search'];

    $_SESSION['search'] = $search;

    $sqlQuery = "SELECT * FROM campsites ='$search'";
    $result = $campDataSet->fetchAllCamps($sqlQuery);

    if($result > 0){

        echo'<div class="table-responsive">
                <table class="table">
                    <thead id="table1Head">
                    <tr><td>campID</td>
                        <td>Name</td>
                        <td>Address</td>
                        <td>Postcode</td>
                        <td>Country</td>
                        <td>Latitude</td>
                        <td>Longitude</td>
                        <td>email</td>
                        <td>Phone<td></tr>
                    </thead>
                    <tbody>

              </div>';

        while($row = $result->fetch_assoc()){
            echo '<td>' . $row['id_campsite']. '</td> <td>' . $row['campsite_name'] . '</td> <td>' . $row['address'] . '</td> <td>' . $row['postcode']. '</td> <td>' . $row['country']. '</td> <td>' . $row['lattitude']. '</td> <td>' . $row['longitude']. '</td> <td>' . $row['email']. '</td> <td>' . $row['phone_number']. '</td> </td>';
        }
        echo "</tbody></table>";
    } else {
        print " 0 results";
    }
}

编辑:

代码语言:javascript
复制
var_dump($result);

array(1) { [0]=> object(DBdata)#6 (11) { ["db"]=> NULL ["conn"]=> object(PDO)#7 (0) { } 
    ["id_campsite"]=> string(1) "1" ["campsite_name"]=> string(13) "lake district" ["address"]=> string(32) "lake distrcit greater manchester"  
    ["postcode"]=> string(7) "m21 8fx" ["country"]=> string(7) "England" ["lattitude"]=> string(13) "1 0800 243230" ["longitude"]=> string(12) "120312310978" 
     ["email"]=> string(14) "lake@gmail.com" ["phone_number"]=> string(12) "059874327823" } }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-10 00:28:18

此错误的一个可能原因是$campDataSet->fetchAllCamps($sqlQuery)返回一个数组。在这种情况下,您的代码应该如下所示:

代码语言:javascript
复制
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $search = $_POST['search'];
    $_SESSION['search'] = $search;

    $sqlQuery = "SELECT * FROM campsites ='$search'";
    $result = $campDataSet->fetchAllCamps($sqlQuery);

    if (count($result) > 0) {
        echo'<div class="table-responsive">
                <table class="table">
                    <thead id="table1Head">
                    <tr><td>campID</td>
                        <td>Name</td>
                        <td>Address</td>
                        <td>Postcode</td>
                        <td>Country</td>
                        <td>Latitude</td>
                        <td>Longitude</td>
                        <td>email</td>
                        <td>Phone<td></tr>
                    </thead>
                    <tbody>

            </div>';
        foreach ($result as $row) {
            echo '<td>' . $row['id_campsite']. '</td> <td>' . $row['campsite_name'] . '</td> <td>' . $row['address'] . '</td> <td>' . $row['postcode']. '</td> <td>' . $row['country']. '</td> <td>' . $row['lattitude']. '</td> <td>' . $row['longitude']. '</td> <td>' . $row['email']. '</td> <td>' . $row['phone_number']. '</td> </td>';
        }
        echo "</tbody></table>";
    } else {
        print " 0 results";
    }
}
?>

更新:

您的$campDataSet->fetchAllCamps返回一个对象数组。在这种情况下,这更合适:

代码语言:javascript
复制
<?php
    ...
    foreach ($result as $row) {
        echo '<td>' . $row->id_campsite. '</td> <td>' . $row->campsite_name . '</td> <td>' . $row->address . '</td> <td>' . $row->postcode . '</td> <td>' . $row->country. '</td> <td>' . $row->lattitude . '</td> <td>' . $row->longitude . '</td> <td>' . $row->email . '</td> <td>' . $row->phone_number . '</td> </td>';
    }
    ...
?>
票数 1
EN

Stack Overflow用户

发布于 2019-04-10 00:27:42

假设fetchAllCamps()为您执行获取操作,这就是为什么您有一个数组而不是一个结果集,所以不是一行……

代码语言:javascript
复制
while($row = $result->fetch_assoc()){

将其替换为

代码语言:javascript
复制
foreach ( $result as $row ) {
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55597157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档