【发布时间】:2014-12-23 06:56:13
【问题描述】:
我在数据库中有一个布尔字段(“完成”)。获取/行的函数不返回该字段为布尔值的 json,但它返回 1 或 0。
function getTasks() {
$sql = "SELECT id,task_name,done FROM tarea ORDER BY id";
try {
$db = getConnection();
$stmt = $db->query($sql);
$tasks= $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($tasks);
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
我怎样才能将那个列(“完成”列)作为布尔值?我的意思是,是否可以使用 PDO::PARAM_BOOL 投射列??
这是我在数据库中插入布尔值的 UPDATE 示例,它运行良好:
function updateTask($id) {
$request = Slim::getInstance()->request();
$body = $request->getBody();
$task = json_decode($body);
$sql = "UPDATE tarea SET task_name=:task_name, done=:done WHERE id=:id";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("task_name", $task->task_name);
$stmt->bindParam("done", $task->done,PDO::PARAM_BOOL); // cast before execute
$stmt->bindParam("id", $id);
$stmt->execute();
$db = null;
echo json_encode($task);
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
【问题讨论】:
-
它对我不起作用,你提到的那个例子是用于 INSERT 和 UPDATE,而不是 SELECT...
-
你不能在输出中使用 bindParam,你可以在结果中使用它。或者您可以使用自定义类来填充,但这只是我的答案的包装。
标签: php mysql pdo casting boolean