嵌套查询未运行,始终返回null。

时间:2013-09-21 14:30:51

标签: php mysql json

我正在开发移动应用程序,当用户登录php / mysql网络服务器时,用户详细信息通过json存储在本地sqlite数据库中。

这很好用。接下来,我试图从mysql DB中的另一个表更新第二个sqlite表。

对于第二个查询,返回的json始终为null。 (如果单独运行,查询就可以了)

我可以像这样运行两个查询吗?有什么想法吗?

感谢。

<?php

include 'DB_Connect.php';


    // get tag
    if (isset($_POST['email']) && $_POST['email'] != '') {
    $tag = 'login';

    //json response array
    $response = array();

    // check for tag type
    if ($tag == 'login') {

    $email = $_POST['email'];
    $password = $_POST['password'];

    //check user exists
    $qry = "SELECT uid, name, email, registration_date, updated_at FROM users WHERE email = ? AND password = ? ";
    $stmt = $mysqli->prepare($qry);
    $stmt->bind_param('ss', $email, $password);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($uid, $name, $email, $registration_date, $updated_at); // get variables from result.
    $stmt->fetch();
    if ($stmt->num_rows == 1){

            // if user exists, set json values
            $response["success"] = 1;
            $response["uid"] = $uid;
            $response["user"]["name"] = $name;
            $response["user"]["email"] = $email;
        $response["user"]["registration_date"] = $registration_date;
            $response["user"]["updated_at"] = $updated_at;
            echo json_encode($response);
            $stmt->close();

        if  ($response["success"] = 1 ){
            $qry = "SELECT device_name, device_registration_date FROM devices WHERE parent_id =?";
            $stmt = $mysqli->prepare($qry);
            $stmt->bind_param('s',$uid);
            $stmt->store_result();
            $stmt->bind_result($device_name, $device_registration_date); // get variables from result.
            $stmt->fetch();
            $response2["device"]["device_name"] = $device_name;
            $response2["device"]["device_registration_date"] = $device_registration_date;
            echo json_encode($response2);
            }

  else if ($tag = 'register' ... blah blah blah .....

2 个答案:

答案 0 :(得分:2)

我希望这能解决问题:

if ($response["success"] = 1 ){

应该是:

if ($response["success"] == 1 ){

(两个等于if)

答案 1 :(得分:1)

使用JOIN

一次查询两个表格
SELECT u.uid, u.name, u.email, u.registration_date, u.updated_at,
       d.device_name, d.device_registration_date
FROM users u
LEFT JOIN devices d ON d.parent_id = u.uid
WHERE u.email = ? and u.password = ?
相关问题