【发布时间】:2020-12-20 01:22:59
【问题描述】:
我的主要问题是下面的代码对我来说很好,但它没有优化,我有一个包含以下 MySQL 请求的 PHP 文件:
if("GET_CLIENT" == $action){
$code = $_POST['code'];
$db_data = array();
$sql = "SELECT `nom` , `prenom`, `age` FROM `client` WHERE `code` LIKE '$code'" ;
$result = $conn->query($sql);
$row = $result->fetch_assoc())
echo json_encode($db_data);
$conn->close();
return;}
在我的飞镖应用程序中,我有以下课程Client:
class Client {
String code;
String nom;
String prenom;
Client({this.code, this.prenom, this.nom });
factory Client.fromJson(Map<String, dynamic> json) {
return Client(
code: json['code'] as String,
nom: json['nom'] as String,
prenom: json['prenom'] as String, ); } }
现在要从数据库中获取返回的单行,我有以下Future 函数:
Future<Client> fetchClient(String code) async {
var map = Map<String, dynamic>();
map['action'] = 'GET_CLIENT';
map['code'] = code;
var response = await http.post(uri, body: map);
if (response.statusCode == 200) {
final items = json.decode(response.body).cast<Map<String, dynamic>>();
List<Client> listOfClients = items.map<Client>((json) {
return Client.fromJson(json);
}).toList();
print(listOfClients.first.code);
return listOfClients.first;
} else {
throw Exception('Failed to load data.');
}
}
这对我来说很好,但我可以看到Future 函数正在创建一个客户列表,这个列表当然只有一个项目,所以我使用了return listOfClients.first; 现在我的问题是如何优化我的未来函数只返回一个客户,如下所示:
if (response.statusCode == 200) {
final items = json.decode(response.body).cast<Map<String, dynamic>>();
Client client = .. somthing ??
// instead of List Client
return client; // instead of return listOfClients.first
}
PS:这篇文章的标题有点混乱,任何修改它的建议请编辑
【问题讨论】:
-
问题,代码可以为多个客户重复吗?
-
如果你的答案是否定的,如果我在我的回答中说,你必须修改查询
-
$sql = "SELECT
nom,prenom,ageFROMclientWHEREcodeLIKE '$code limit 1'" ;
标签: php mysql json flutter dart