3

我试图将 mysqli 与 bind_result 一起使用,但我得到的只是空值。我的$stmt

行数大于 0,所以我确实有一些数据。

我真的不明白应该进入什么价值bind_result

我已阅读手册http://php.net/manual/en/mysqli-stmt.bind-result.php

他们没有解释我应该在bind_result.

我应该把列名放在那里吗?如果是,作为字符串?我如何获得我想要的值?

这是我的代码,感谢您的帮助:

$sql = "SELECT * FROM comments WHERE workout_name = ? AND user = ?"; 

    $stmt = $mysqli->prepare($sql) or trigger_error($mysqli->error."[$sql]");

    $stmt->bind_param('ss', $workout_name, $user);

    $workout_name = "rytg";
    $user = "tomer";

    $stmt->execute();

    $stmt->store_result();

    $stmt->bind_result($comment, $commented_user);

    if($stmt->num_rows > 0)
    {
    $response["workouts"] = array();

        while ($stmt->fetch()) 
    {
        // temp user array
        $workouts = array();

        $workouts["comment"] = $comment;
        $workouts["user"] = $commented_user;

        // push single product into final response array
        array_push($response["workouts"], $workouts);
    }

}

4

2 回答 2

2

您唯一的问题是错误报告不足

error_reporting(E_ALL);
ini_set('display_errors',1);

只需在代码顶部添加这些行,您就会立即被告知代码的确切问题。

请注意,在生产服务器上,您必须关闭显示错误并登录

于 2013-07-31T08:31:56.240 回答
-2

目前,我旁边没有可用的 PHP 安装,所以我无法验证它,但我相信您可能必须在执行查询之前绑定参数和结果,如下所示:

$workout_name = "rytg";
$user = "tomer";

$stmt = $mysqli->prepare($sql) or trigger_error($mysqli->error."[$sql]");
$stmt->bind_param('ss', $workout_name, $user);
$stmt->bind_result($comment, $commented_user);
$stmt->execute();

我也不太确定store_result()。我不记得在检索结果时必须使用它,因此您可能想尝试在没有它的情况下运行您的代码,看看会发生什么。

于 2013-07-31T08:19:21.267 回答