在我的开发环境中,我在一个类中有静态函数,我可以在其中检索表的数据列表并打印到屏幕上。它工作得很好。这是我的代码:
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 语句失败。感谢大家的帮助。