【问题标题】:PHP code will SELECT from one MySQL table but not from anotherPHP 代码将从一个 MySQL 表中选择,但不会从另一个表中选择
【发布时间】: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) 表权限不正确

标签: php mysql select get


【解决方案1】:

使用 print_r 显示一些变量后,我发现问题与 json 编码有关。再次使用 print_r 以及 json_last_error() 我发现问题与 UTF-8 编码有关。

包含以下代码行最终解决了我的问题。

$shops = mb_convert_encoding($shops, "UTF-8", "auto");

回顾我的应用,我似乎有一个特殊的角色,在其中一个标题中让一切都变得很糟糕。考虑到它在我重建 mySQL 服务器之前就可以工作,这也很奇怪。

感谢所有帮助过的人!

【讨论】:

    猜你喜欢
    • 2016-01-05
    • 1970-01-01
    • 2016-07-22
    • 2011-03-30
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2012-07-30
    相关资源
    最近更新 更多