Php 下面的代码出了什么问题?
我的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
$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详细信息