如何使用mysqli bind_result

时间:2013-07-31 08:08:12

标签: php mysqli

我试图将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);
    }

}

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:-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()。我不记得在检索结果时必须使用它,所以你可能想尝试在没有它的情况下运行代码,看看会发生什么。