douzhun4124 2017-01-23 22:35
浏览 56
已采纳

从bind_result返回json对象

I have simple PHP script that returns me user object, and it looks like this

<?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();;

?>

My question: Is there a better way to return json object than this, where i need to create object with every property, is there something more "automatic" for this kind of stuff ?

$member['id'] = $id;
$member['firstName'] = $firstName;
$member['lastName'] = $lastName;
$member['email'] = $email;
echo json_encode($member);

I'm asking this because i had this same script written like this, but i change it to prepared statement because of performance and security

<?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();

?> 

and i used simply

$member = mysqli_fetch_assoc($result);

echo json_encode($member);
  • 写回答

1条回答 默认 最新

  • dsafq2131321 2017-01-23 22:40
    关注

    If you have the MYSQLND driver, you can use fetch_assoc() with a prepared statement.

    $stmt = $mysqli->prepare("SELECT id, firstName, lastName, email FROM users WHERE id = ?");
    $stmt->bind_param("i", $_SESSION["id"]);
    $stmt->execute();
    $result = $stmt->get_result();
    $member = $result->fetch_assoc();
    

    If not, you can refer to the array elements directly in bind_result(), instead of using separate variables.

    $member = array();
    $stmt->bind_result($member['id'], $member['firstName'], $member['lastName'], $member['email']);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上