0

我对这个准备好的声明有一些真正的问题,我不知道为什么。我想知道是否有人可以帮助我。我知道我正在发送正确的信息,并且我知道信息存在于我要查找的位置,但是准备好的语句根本不返回任何内容。

我这样调用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

4

2 回答 2

1

必须存储执行结果。

试试 $stmt->store_result(); 在 $stmt->fetch(); 之前

于 2012-05-28T09:48:37.940 回答
0

你没有展示你是如何初始化$tTheFilename的。假设它的内容是正确的,你应该绑定参数

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

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

于 2012-05-28T09:45:55.950 回答