为什么php试图使用4GB来bind_results

时间:2016-02-04 03:36:00

标签: php mysql mysqli

我收到了最奇怪的错误。首先是我非常简单的代码:

<!DOCTYPE html>
<html>
    <header> 
        <link rel="stylesheet" type="text/css" href="/style.css" />
    </header>
    <body>


        <?php
            require_once 'includes/config.php';


            // Create connection
            $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATA);
            if ($conn->connect_error) die("Connection failed: " . $conn->connect_error);

            //get safety sheat fields
            $query="SELECT `fields` FROM `subforms` WHERE `id`=1 LIMIT 1";
            $stmt =  $conn->prepare($query);
            $stmt->bind_result($fields);
            $stmt->execute();
            if (!$stmt->fetch()) {
                echo 'error: no such form';
                die();
            }
            die();
很简单。 require不再需要获取mysql数据库的常量。

这段代码在我的xampp设置上运行正常但是当我把它放在linux服务器上时,我得到:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 4294967296 bytes) in /home/[path to files I don't wish to make public]/test.php on line 20

第20行$stmt->bind_result($fields);

我真的不明白这是怎么可能的,也没有丝毫的线索想知道如何修复。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

通过添加

解决

$stmt->store_result();

bind_result行之前。仍然非常奇怪,它试图保留整个4GB的长篇文章可能存储。猜猜我确实需要增加ram或缩小字段,只是填满了字段。