我的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
)
)
现在在查询部分我想使用上面数组中的user_id值,但是我无法做到。我在某个地方出错了吗?你能帮我纠正吗?当我打印查询时,出现空白屏幕而不是正确的查询。提前谢谢。
答案 0 :(得分:4)
您在sql命令中使用了错误的数据变量:
而不是
$data['user_id']
应该是
$value['user_id']
因为你是iteratin $ data而且每个中间结果都是$ key / $ value对
修改强> 第二个错误是这一行:
$sql =" SELECT users_details.user_state,users_details.user_city FROM ".TBL_USERS." AS user, "
此行最后缺少分号
原因,为什么你有空白页,可能是因为PHP错误。如果您已启用error_reporting,您会看到,PHP错误输出有什么问题。
答案 1 :(得分: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
上。
答案 2 :(得分: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']};
";
答案 3 :(得分: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)