我正在尝试从数据库中检索信息,并将其放入PHP和HTML格式的表中。然而,我遇到了一个问题,它显示我遇到了一个错误:
致命错误:未捕获错误:函数名必须是F:\Client Server\Website\campsites.php:41堆栈跟踪中的字符串:#0 {main}引发
当我检查错误所在的行时,它显示:
在数组中找不到
方法'fetch_assoc‘
我该如何解决这个问题呢?
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";
}
}
编辑:
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" } }
发布于 2019-04-10 00:28:18
此错误的一个可能原因是$campDataSet->fetchAllCamps($sqlQuery)
返回一个数组。在这种情况下,您的代码应该如下所示:
<?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
返回一个对象数组。在这种情况下,这更合适:
<?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>';
}
...
?>
发布于 2019-04-10 00:27:42
假设fetchAllCamps()
为您执行获取操作,这就是为什么您有一个数组而不是一个结果集,所以不是一行……
while($row = $result->fetch_assoc()){
将其替换为
foreach ( $result as $row ) {
https://stackoverflow.com/questions/55597157
复制相似问题