在我的開發環境中,我有一個類中的靜態函數,其中我可以檢索表格數據列表並打印到屏幕上。它效果很好。這是我的代碼: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