Я использую PDO для захвата записей из таблицы mysql. Данные будут закодированы с json_encode() и печатается через Слим рамки для API:Использование PDO: выборка vs fetchObject для распечатки JSON
$app->get('/get/profile/:id_user', function ($id_user) use ($app) {
$sql = 'SELECT * FROM user WHERE id_user = :id_user';
try {
$stmt = cnn()->prepare($sql);
$stmt->bindParam(':id_user', $id_user, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_ASSOC); // THIS!!!
if($stmt->rowCount()) {
$app->etag(md5(serialize($data)));
echo json_encode($data,JSON_PRETTY_PRINT);
} else {
$app->notfound();
}
} catch(PDOException $e) {
echo $e->getMessage();
}
});
Должен ли я использовать
$data = $stmt->fetch(PDO::FETCH_ASSOC);
или
$data = $stmt->fetchObject();
? Любые прямые выгоды от сбора данных как объекта? Я читал несколько примеров, но они никогда не объясняют, почему. Единственное использование полученных данных - это распечатать их в формате JSON. Благодаря!
Это зависит только от вас. Вам нравится вводить '$ data ['colname']' или '$ data-> colname'? – Barmar
В этом примере я вижу небольшую разницу (оба будут приводить к JSONed Object). Но может быть разница, если вам нужно каким-то образом увеличить найденные строки. После многих попыток с JS, я иногда склонен забывать, что массивы на PHP должны передаваться по ссылке в этом случае.) И да, '->' синтаксис более чист в строковых литералах PHP. – raina77ow
Я думаю, что они оба получат одинаковые значения в JSON, так как ассоциативные массивы выполняются как объекты в JSON. – Barmar