只有在使用限制时才显示php和mysql查询结果

时间:2015-01-29 18:55:44

标签: php mysql json

试图学习更多php,mysql& json,我从http://www.mysqltutorial.org/wp-content/uploads/downloads/2013/05/mysqlsampledatabase1.zip下载了一个演示数据库。

我希望显示所有客户,使用编辑和删除按钮以html表格格式回显它们。

我的SQL语句是

"SELECT * FROM customers" 

它不返回任何结果,也没有错误。但是,如果我将SQL语句更改为

"SELECT * FROM customers LIMIT 11" 

返回122行中的前11行。使用LIMIT为1-11将返回结果,而任何12或更多返回结果。

有人可以为我解释一下吗?

更新:协助代码。



<?php
	$servername = "localhost";
	$username = "root";
	$password = "root";
	$dbname = "classicmodels";
	$dbh = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password) or die(mysql_error());
	$sql = 'SELECT * FROM customers LIMIT 12' or die(mysql_error());
	$stmt = $dbh->prepare($sql);
	$stmt->execute();
	$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
	echo json_encode($result);
    die();
?>
&#13;
&#13;
&#13;

提前谢谢你,

博伽

2 个答案:

答案 0 :(得分:1)

问题不在您的SQL代码中。如果

SELECT * FROM customers LIMIT 11

正常工作,

也是如此

SELECT * FROM customers LIMIT 12

因此,您的PHP代码可能存在错误。要么它不能正确处理正确检索的第12条记录,要么由于其他原因无法处理12+记录。你能用相关的PHP代码扩展这个问题吗?

修改

要正确显示特殊字符,例如Luleå(您的第12条记录)中的å,您必须匹配数据库设置,数据库连接和输出中的字符集。

例如,如果您的数据库归类是UTF-8,请在脚本SET NAMES 'utf8'中进行第一次查询。然后,在打印json之前,向浏览器发送一个标题(我假设您正在输出到浏览器):header('Content-Type: text/json; charset=utf-8');

通过正确配置数据库,SET NAMES变得过时。

我发现的一些有用的指南更详细地解释了这一点:

答案 1 :(得分:0)

由于您从表中选择了所有内容,因此您可能希望将语法更改为:
SELECT * FROM customers(而不是@)
限制x
如果x是您的数字,则应允许超过12的数字。