2014-11-23 76 views
1

我有這樣的代碼:出的內存非常簡單的SQL查詢

 <?php 
    require_once($_SERVER['DOCUMENT_ROOT'] . '/framework/classes/DBConnection.php'); 

    define('DB_NAME', 'thename'); 
    define('DB_HOST', 'thehost.com'); 
    define('DB_USER', 'user'); 
    define('DB_PASSWORD', 'pwd'); 




// Connect to database 
function db_connect() { 
    return DBConnection::GetConnection(); 
} 


function getMeta($conn) { 
    $sql = "SELECT order_ref FROM orders LIMIT 0,1"; 
    $stmt = $conn->prepare($sql); 
    $stmt->execute(); 
    $stmt->bind_result($ref); 
    $stmt->fetch(); 
    $stmt->close(); 
    return $ref; 
} 

function getMeta2($conn, $page) { 
    $sql = "SELECT meta FROM pages_meta WHERE pageid = ?"; 
    $stmt = $conn->prepare($sql); 
    $stmt->bind_param('s', $page); 
    $stmt->execute(); 
    $stmt->bind_result($meta); 
    $stmt->fetch(); 
    $stmt->close(); 
    return $meta; 
} 


$conn = db_connect(); 
?> 
</head> 
<body> 
<h1>Hello World</h1> 
<?php echo getMeta($conn); ?> 
<br> 
<?php echo getMeta2($conn, "homepage"); ?> 
</body> 
</html> 
<?php 
$conn->close(); 
?> 

輸出:

Hello World 

1407324725 

Fatal error: Allowed memory size of 209715200 bytes exhausted (tried to allocate 4294967296 bytes) in /home/rnsalarm/co2supermarket.co.uk/test.php on line 41 

咦???!運行此SQL時,出現內存不足異常:

SELECT meta FROM pages_meta WHERE pageid =?

該表只有15行,即使它有索引。任何想法發生了什麼?該網站的其餘部分工作正常,只是這一個查詢它拋出搖擺。增加一些更多的奧祕;它工作正常,如果我在我的本地開發計算機上運行,​​連接到相同的數據庫,只有當它被上傳到服務器,我得到這個問題。這很奇怪。就像我說的那樣,網站的其他部分工作得很好。

有什麼想法這裏發生了什麼?

回答

2

啊哈!數據類型是longtext - 似乎我的主機不喜歡longtext - 改爲varchar而不是瞧!