【发布时间】:2020-07-28 17:35:31
【问题描述】:
我正在开发一个 Android 应用,用于存储和记录我去过的咖啡店。这只是一个我已经工作了一段时间的小型个人项目。我最近更换了服务器并在上面重建了我的 SQL 服务器。从那以后我只能从一个表中选择,另一个表不返回任何值。
运行 GET 命令的 PHP 代码对于两个表是相同的,唯一的区别是表名和内容。该代码在 mySQL 服务器重建之前也可以工作。这让我相信我的 SQL 服务器有问题,我只是在重建它时从以前的服务器导入了数据。
<?php
//DATABASE CONNECTION INFO LEFT OUT//
$connect = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
die();
}
$stmt = $connect->prepare("
SELECT ShopID
, IconURL
, Title
, Address
, City
, State
, Zip
, Rating
FROM CoffeeShops
;");
$stmt->execute();
$stmt->bind_result($ShopID, $IconURL, $Title, $Address, $City, $State, $Zip, $Rating);
$shops = array();
while($stmt->fetch()){
$temp = array();
$temp['ShopID'] = $ShopID;
$temp['IconURL'] = $IconURL;
$temp['Title'] = $Title;
$temp['Address'] = $Address;
$temp['City'] = $City;
$temp['State'] = $State;
$temp['Zip'] = $Zip;
$temp['Rating'] = $Rating;
array_push($shops, $temp);
}
echo json_encode($shops);
mysqli_close($connect);
?>
上面的代码是针对不会返回数据的表。其他代码是相同的,可以正常工作,如上所述。
【问题讨论】:
-
您是否看到任何错误消息?您能否也将它们添加到问题中?
-
也在“$stmt = $connect->prepare("SELECT ShopID, IconURL, Title, Address, City, State, Zip, Rating FROM CoffeeShops;");"行删除 CoffeeShops 后的分号,因为这可能会导致错误。
-
您必须打开错误报告才能看到任何错误:How to get the error message in MySQLi?
-
@lna21 该分号是可选的,不会引起问题
-
切换到错误报告将是最好的解决方案,因为您可以立即看到错误。一些可能的问题: 1) 语句不绑定,试试 if($stmt->bind_result(...)) { echo ('Binded');} else { echo('failed to bind'); } //我有这个问题。 2) 表权限不正确