在我的开发环境中,我有一个类中的静态函数,其中我可以检索表格数据列表并打印到屏幕上。它效果很好。这是我的代码:MySQL查询没有生产结果,但在开发中没有问题
public static function getList($numRows=1000000, $order="name ASC") {
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM posttypes ORDER BY " . mysql_real_escape_string($order) . " LIMIT :numRows";
$stmt = $conn->prepare($sql);
$stmt->bindValue(":numRows", $numRows, PDO::PARAM_INT);
$stmt->execute();
$list = array();
while ($row = $stmt->fetch()) {
$postType = new PostType($row);
$list[] = $postType;
}
//Now get total number of posts that match criteria
$sql = "SELECT FOUND_ROWS() AS totalRows";
$totalRows = $conn->query($sql)->fetch();
$conn = null;
return (array("results" => $list, "totalRows" => $totalRows[0]));
}
但是,在我的生产环境中,我无法检索任何记录。但是,如果我在phpMyAdmin中运行精确的查询,我会得到我想要的确切记录。
不确定发生了什么事?这是我第一次设置生产环境。我正在使用蓝色主机。
更新: 好吧,我通过删除mysql_real_escape_string来修复它,但是我相信它是更安全的转义字符串,但是这必须返回false并且失败SQL语句。感谢大家的帮助。
'$ conn->的setAttribute(PDO :: ATTR_EMULATE_PREPARES,FALSE);'(也许这在'php.ini'已配置您的dev的服务器?) – eggyal 2013-04-29 01:12:14
你不能绑定限制,我很确定它会失败。在这两个环境 – ajreal 2013-04-29 01:38:44
@ajreal:它在我的开发环境中工作正常,并且限制似乎可以绑定好。无论如何,我尝试删除绑定,结果仍然相同。 – TimNguyenBSM 2013-04-29 03:48:54