【问题标题】:MySQL Select statement not outputting anythingMySQL Select 语句不输出任何内容
【发布时间】:2014-05-17 11:07:07
【问题描述】:

我的 SQL 语句在运行时没有输出任何内容。只是一个空屏幕。

这是我的 PHP 代码:

<?php
$con = mysqli_connect("localhost", "root", "root","payBills");
$paidBills = "SELECT * FROM houseBills WHERE houseID = '20'";
$resultset = mysqli_query($con, $paidBills);
$records = array();
//Loop through all our records and add them to our array
while ($r = mysqli_fetch_assoc($resultset)) {
    $records[] = $r;
}
//Output the data as JSON
echo json_encode($records);
?>

这是我的 SQL 表

  CREATE TABLE `houseBills` (
  `houseBillID` int(11) NOT NULL AUTO_INCREMENT,
  `houseID` varchar(11) NOT NULL,
  `name` varchar(50) NOT NULL,
  `amount` varchar(10) NOT NULL,
  `date` varchar(50) NOT NULL,
  `addedBy` varchar(100) NOT NULL,
  PRIMARY KEY (`houseBillID`),
  UNIQUE KEY `houseBillID` (`houseBillID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `houseBills`
--

INSERT INTO `houseBills` (`houseBillID`, `houseID`, `name`, `amount`, `date`, `addedBy`) VALUES
(1, '20', 'Loo roll', '£10', '10', 'samstone920@googlemail.com'),
(2, '20', 'toothpaste', '3', 'egreg', '44tq');

我有什么明显的遗漏吗?

【问题讨论】:

  • 你试过没有json_encode。
  • 你试过echo var_dump($records)吗?
  • 包机类型可能有误
  • 否,但这是一个常见问题。请参阅:stackoverflow.com/questions/1972006/…。您可以尝试按照建议将 CHARACTER 更改为 utf8。
  • 您的表当前设置为 CHARSET=latin1 这应该更改为 utf8。请参阅此帖子:stackoverflow.com/questions/8906813/…ALTER TABLE houseBills CONVERT TO CHARACTER SET utf8;

标签: php mysql sql web


【解决方案1】:

表当前设置为 CHARSET=latin1 JSON_ENCODE 不例外。见这篇文章:json_encode is returning NULL?。 ALTER TABLE houseBills CONVERT TO CHARACTER SET utf8;

因为表格已经包含更改之前的数据,所以这仍然会产生问题。在这种情况下(测试阶段项目),解决方案是重新输入数据。对于大型现有表,也许尝试将数据复制到新表可能会提供解决方案。请注意,这是未经测试的。

【讨论】:

  • 你,我的朋友,是个英雄。
猜你喜欢
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
相关资源
最近更新 更多