gpt4 book ai didi

php - 无法显示保存在 phpmyadmin 数据库中的文件详细信息

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:07 24 4
gpt4 key购买 nike

我正在用 angular 和 php 构建一个项目,我有一个"file"表,我可以只使用 php 上传文件。现在我正在尝试检索数据库中的所有文件详细信息。我在控制台中的错误是:

 angular.js:13550 SyntaxError: Unexpected token < in JSON at position 0
at Object.parse (native)

有人可以检查我的代码吗?

用于显示的 PHP:

    <?php header('Content-Type: text/html; charset=utf-8');
$connection = mysqli_connect('localhost','root','','hamatkin');

mysqli_query($connection,"SET character_set_client = utf8");
mysqli_query($connection,"SET character_set_connection = utf8");
mysqli_query($connection,"SET character_set_results = utf8");

if(!$connection){
die("couldnt connect".mysqli_error);
}
$query = "SELECT * FROM `file` ";
$queryResult = $connection->query($query);

$queryResult2 = array();
if($queryResult === FALSE) { die($connection->error); }
if( $queryResult->num_rows>0){
while($row = $queryResult->fetch_assoc()){
$queryResult2[] = $row;
}
}
$queryResult3 = json_encode($queryResult2);
echo json_encode($queryResult3);
?>

Controller :

"use strict";

angular.module('dataSystem').controller('allPriceOffersCtrl', function($scope,$route,$location,$http) {
$http({method:'GET', url:'api/customers-tab/get-all-priceOffers.php/'})
.then(function(response) {
var arr = JSON.parse(JSON.parse(response.data));
$scope.files = arr;
})

// This will log you the error code and trace, if there is an error.

.catch(function(err) {
console.log('err', err)
});

});

HTML:

    <div class="table-responsive">
<table class="customer-list table table-striped">
<thead>
<tr>
<th class="Column-Header">מספר</th>
<th class="Column-Header">משו</th>
<th class="Column-Header">שם מלא</th>
<th class="Column-Header">ת.ז./עוסק מורשה</th>
<th class="Column-Header">עיר</th>
<th class="Column-Header">כתובת</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="x in files">
<!-- <td>{{$index + 1}}</td> -->
<td>{{ x.id}}</td>
<td>{{ x.name}}</td>
<td>{{ x.mime}}</td>
<td> {{ x.size}} </td>
<td> {{ x.data}} </td>
<td> {{ x.created}} </td>
</tr>
</tbody>
</table>
</div>

最佳答案

调试不友好代码的典型案例。

首先,您必须检查您的$connection->query 是否可能返回错误,也就是说,返回值不是结果集而是false。所以

if($queryResult === false) {
die($connection->error);
}

即使这样你也应该有一个“正常”的结果,也就是说,你期望一个数组数组,所以 $queryResult2 至少应该被初始化为一个数组:

$queryResult2 = array(); // before the while loop.

此外:您绝对不需要检查 num_rows,只需执行 while 循环,因为如果没有行,它不会做任何错误。 fetch 就是这么聪明!

事实证明,用于排序的 date 列不存在。

经过长时间的调试后,我们发现,数据库中可能存储了二进制数据,并且 json_encode() 由于“格式错误的 utf8 字符”而返回 false。 angularjs 部分必须进行调整,以免过于频繁地解码/解析 json。我假设数据库中没有存储二进制数据。让它成为一个警告,调试时不要有任何假设。始终检查错误返回值。

易于调试的代码会有所帮助。世界,请编写调试友好的代码,因为这不是一件容易的事,调试变得像将错误消息放入某个搜索引擎一样简单,而不是让 stackoverflow 在问题的注释中调试代码。

关于php - 无法显示保存在 phpmyadmin 数据库中的文件详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38720033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com