У меня есть простой PHP скрипт, который возвращает мне объект пользователя, и это выглядит как этотВозвращение JSON объект из bind_result
<?php
require_once '../dbConnect.php';
session_start();
if (empty($_SESSION["id"])) {
http_response_code(401);
return;
}
$stmt = $mysqli->prepare("SELECT id, firstName, lastName, email FROM users WHERE id = ?");
$stmt->bind_param("i", $_SESSION["id"]);
$stmt->execute();
$stmt->bind_result($id, $firstName, $lastName, $email);
$stmt->fetch();
$member['id'] = $id;
$member['firstName'] = $firstName;
$member['lastName'] = $lastName;
$member['email'] = $email;
echo json_encode($member);
$stmt->close();
$mysqli->close();;
?>
Мой вопрос: Есть ли лучший способ вернуть JSON объект, чем это, где я должен создать объект с каждым свойством, есть ли что-то более «автоматическое» для такого рода вещей?
$member['id'] = $id;
$member['firstName'] = $firstName;
$member['lastName'] = $lastName;
$member['email'] = $email;
echo json_encode($member);
Я спрашиваю это потому, что я имел тот же самый сценарий, написанный, как это, но я изменить его на подготовленное заявление из-за производительности и безопасности
<?php
require_once '../dbConnect.php';
session_start();
if (empty($_SESSION["id"])) {
http_response_code(401);
return;
}
$memberId = $_SESSION["id"];
$query="SELECT id, firstName, lastName, email FROM users WHERE id='$memberId'";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$member = mysqli_fetch_assoc($result);
echo json_encode($member);
$mysqli->close();
?>
и я использовал просто
$member = mysqli_fetch_assoc($result);
echo json_encode($member);
Я не имею драйвер MYSQLND, также я отредактировал мой вопрос вы можете увидеть его сейчас –
я вижу, это не меняет моего ответа. Вы не можете использовать 'fetch_assoc()' с подготовленным оператором, если у вас нет драйвера MYSQLND. – Barmar
Так что позвольте мне проверить с вами, если я устанавливаю mysqlnd, я могу просто использовать его после $ stmt-fetch(); $ member = $ stmt-> fetch_assoc() ;, также вы можете сказать мне, что мой новый скрипт лучше моего старого, где я не использовал подготовленный оператор –