是什么导致mysqli_stmt :: bind_result退出我的PHP脚本

时间:2014-09-14 00:28:14

标签: php mysqli prepared-statement bind centos6

编辑2 :我只是将我的PHP版本升级到php 5.5.15。我相信这个bug本身就是PHP本身。我发现这PHP bug看起来非常相似。有一个补丁可用,但我选择了一个简单的升级,而不是我想的修复。

编辑:当php遇到bind_result()时,我现在在cli中看到Segmentation fault (core dumped)


我在CentOS版本6.4(最终版)上运行PHP版本5.4.17,每当我使用bind_result方法运行或访问我的一个脚本时,程序就会在该特定行停止。这是我试图运行的脚本:

<?php
    require('./connect.php');
    global $db; //initialized in connect.php
    $username = "testuser";
    $email_in = "test@invalidemail.com";
    $db -> select_db("mydb");
    $query = "SELECT `Email`, `Password` FROM `users` WHERE `Username` = ? OR `Email` = ?";
    $result = $db->prepare($query);
    if($result->error == ""){ 
        $result->bind_param('ss', $username, $email_in);
        $result->execute();
        echo "Show before bind\n";
        try{
            echo "going in";
            $result->bind_result($dbemail, $dbpassword);        
        }catch(Exception $e){
            echo "caught something";
            var_dump($e);
        }
        echo "Show after bind\n";
        $result->store_result();
        $numrows = $result->num_rows;
    }
    $result->close();
    $db->close();
?>

我得到的输出是:

Show before bind going in

除此之外,我有var_dumped所有重要的变量($ db $ result等),他们都看到准确并且没有错误。有趣的是,如果我更改bind_result行并将其放入var_dump,它会显示操作返回true并且脚本为CONTINUES!?并显示“绑定后显示”

改变使一切运转起来:

var_dump($result->bind_result($dbemail, $dbpassword));

如果我还原并使用php 5.3它可以正常工作,并且在使用localhost的MAMP上它也可以正常工作,即使使用PHP 5.4。

以前有人遇到过这个问题吗?如果是这样,你是如何设法解决它的?

0 个答案:

没有答案