无法使这个准备好的select语句工作

时间:2012-05-28 09:36:07

标签: php mysql prepared-statement

我对这个准备好的陈述有一些实际问题,我不知道为什么。我想知道是否有人可以帮助我。我知道我正在发送正确的信息,而且我知道这些信息存在于我正在寻找的地方,但准备好的声明根本不会返回任何内容。

我正在调用这样的PHP文件

$.ajax({
            type: "POST",
            url: "include/main.php",
            data: {func:'LoadThisFile',thefile:NewItemFilename},
            success: function(server_response)
            {
                if(server_response)
                {
                    Doing stuff....
                }
                return;
            }
        });

这是准备好的陈述

$stmt = $mysqli->prepare("SELECT `FileData` FROM `DataTable` WHERE `Filename`=?");
$stmt->bind_param("s", $tTheFilename);
$tTheFilename = $ThisFileName;
$stmt->execute();
$stmt->bind_result($result);
$stmt->fetch();
echo $result;
$stmt->close();
$mysqli->close();

我检查过并仔细检查过:
发送到预准备语句的变量NewItemFilename包含我期望它包含的内容。

数据库和表都存在,我试图返回的数据也是如此,事实上如果我在phpMyAdmin中使用完全相同的语句,以及我想要返回的文件名,我得到了我想要的结果来自准备好的声明。

通过使用echo命令,我可以判断正在建立数据库连接,并且在语句本身内似乎没有出现错误。除了没有任何东西被退回之外,一切似乎都能找到。

谁能告诉我我做错了什么?

非常感谢,BS

2 个答案:

答案 0 :(得分:1)

必须存储结果的执行。

尝试$ stmt-> store_result();在$ stmt-> fetch();

之前

答案 1 :(得分:0)

您没有展示如何初始化$tTheFilename。 Assumin它的内容是正确的你应该绑定params

$stmt->bindParams(1, $tTheFilename);

http://php.net/manual/de/pdostatement.bindparam.php