Php 下面的代码出了什么问题?

Php 下面的代码出了什么问题?,php,mysql,sql,Php,Mysql,Sql,我的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 us

我的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值,但我不能这样做。我哪里出了问题吗?你能帮我改正吗?当我打印查询时,空白屏幕正在出现,而不是正确的查询。提前感谢。

最后一个问题是,您的查询确实非常想要一个连接条件。不要在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上。

最后一个问题是,您的查询确实非常想要一个连接条件。不要在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'];

我猜连接条件在字段用户id上。

也许您想要这个

 $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']};
"; 

也许你想要这个

 $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']};
"; 

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

而不是

$data['user_id']
应该是

$value['user_id']
因为您正在迭代$data,并且每个中间结果都是$key/$value对

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

$sql=从.TBL\u用户中选择用户\详细信息。用户\状态,用户\详细信息。用户\城市。作为用户

此行末尾缺少分号


之所以会出现空白页面,可能是因为PHP错误。如果您启用了错误报告,您将看到PHP错误输出有什么问题。

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

而不是

$data['user_id']
应该是

$value['user_id']
因为您正在迭代$data,并且每个中间结果都是$key/$value对

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

$sql=从.TBL\u用户中选择用户\详细信息。用户\状态,用户\详细信息。用户\城市。作为用户

此行末尾缺少分号

之所以会出现空白页面,可能是因为PHP错误。如果您启用了错误报告,您将看到PHP错误输出有什么问题。

您正在使用

$sql .= TBL_USERS_DETAILS." AS users_details WHERE user.user_id = ". $data['user_id']; 
但$data是数组的集合,而不是单个数组,所以如果要使用所有用户id,请使用loop或join tableeg指定它$数据[0]['user\u id']而不是$data['user\u id'],或者使用逗号分隔查询中的所有用户id

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

但$data是数组的集合,而不是单个数组,所以如果要使用所有用户id,请使用loop或join tableeg指定它$数据[0]['user\u id']而不是$data['user\u id'],或者用逗号分隔查询中的所有用户id

这是一个交叉联接。这就是您想要的吗?第一个$sql=。。。行缺少结尾分号。这是打字错误吗?实际上我的问题是where条件中应该有什么,而不是$data['user_id']。由于使用$data['user_id'],我无法打印查询。这有什么问题吗?您是否忘记在TBL_用户详细信息和TBL_用户中使用$。。ie$TBL\u用户详细信息这是交叉连接。这就是您想要的吗?第一个$sql=。。。行缺少结尾分号。这是打字错误吗?实际上我的问题是where条件中应该有什么,而不是$data['user_id']。由于使用$data['user_id'],我无法打印查询。这有什么问题吗?您是否忘记在TBL_用户详细信息和TBL_用户中使用$。。ie$TBL\u用户\u详细信息