0

我的PHP代码如下:

$data = $grid->GetData();

foreach($data as $key => $value) { 
          $sql  =" SELECT users_details.user_state,users_details.user_city FROM ".TBL_USERS." AS user, "
          $sql .= TBL_USERS_DETAILS." AS users_details WHERE user.user_id = ". $data['user_id']; 

echo $sql; die;
          $this->mDb->Query( $sql);
          $data = $this->mDb->FetchArray();

        }

数组 $data 如下:

Array
(
    [0] => Array
        (
            [user_id] => 9def02e6337b888d6dbe5617a172c18d
            [user_first_name] => Ashutosh
            [user_last_name] => Modi
            [user_email] => ashutosh.modi@gmail.com
            [user_status] => enable
            [user_subscription] => lifetime
            [user_registered_type] => online
            [user_reg_date] => 1325581397
        )

    [1] => Array
        (
            [user_id] => a6d22e4cc3f65778a60b359842bcec82
            [user_first_name] => Dilip
            [user_last_name] => Modi
            [user_email] => dm.modi@gmail.com
            [user_status] => enable
            [user_subscription] => period
            [user_registered_type] => online
            [user_reg_date] => 1325152066
        )

)

现在在查询部分,我想在 where 条件下使用上述数组中的 user_id 值,但我无法做到。我在某个地方出错了吗?你能帮我改正吗?当我打印查询时,会出现空白屏幕而不是正确的查询。提前致谢。

4

4 回答 4

3

您在 sql 命令中使用了不正确的数据变量:

代替

$data['user_id']

应该

$value['user_id']

因为您正在迭代 $data 并且每个中间结果都在 $key / $value 对中

编辑: 第二个错误是这一行:

$sql =" SELECT users_details.user_state,users_details.user_city FROM ".TBL_USERS." AS user, "

此行末尾缺少分号

出现空白页的原因可能是 PHP 错误。如果您启用了 error_reporting,您会看到 PHP 错误输出有什么问题。

于 2013-09-03T11:13:13.390 回答
0

最后一个问题是您的查询真的非常想要有一个join条件。干脆不要,from子句中使用。 始终使用带有on子句的显式连接条件。查询应如下所示:

SELECT users_details.user_state, users_details.user_city
FROM ".TBL_USERS." AS user join ".= TBL_USERS_DETAILS." AS users_details
     on user.user_id = users_details.user_id
WHERE user.user_id = ". $data['user_id'];

我猜想加入条件是在场上user_id

于 2013-09-03T11:12:32.433 回答
0

也许你想要这个...

 $sql =" 
 SELECT ud.user_state
      , ud.user_city 
   FROM TBL_USERS user u
   JOIN TBL_USERS_DETAILS ud
     ON ud.user_id = u.user_id 
  WHERE u.user_id = {$value['user_id']};
"; 
于 2013-09-03T11:12:59.860 回答
0

您正在使用

$sql .= TBL_USERS_DETAILS." AS users_details WHERE user.user_id = ". $data['user_id']; 

但是$data数组的集合不是单个数组,所以如果你想使用所有 user_id 使用循环指定它或使用连接表(例如,$data[0]['user_id']而不是$data['user_id'],或逗号分隔所有用户 id 在查询中)

于 2013-09-03T11:14:01.410 回答