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