我有两个MySQL表
具有id,user_formOfAdress和其他几个字段的用户。字段user_formOfAdress包含表formofadress的id
带有id,formOfAdress_german和其他几个字段的formofadress,例如id 1 = Mr.,id 2 = Mrs。
users表的记录由Session变量标识。
要输出不是字段user_formOfAdress的id,而是输出表格formofadress.formOfAdress_german(例如Mr.或Mrs.)的值,我写了这个:
if(array_key_exists("id", $_SESSION) && $_SESSION['id']){
$uid = $_SESSION['id'];
$link = mysqli_connect("localhost:3307", "root", "Dinah123", "proficrm");
$query = "
SELECT formofadress.ID AS formofadress_ID, formofadress.formOfAdress_german, users.ID, users.user_formOfAdress
FROM `formofadress`
LEFT JOIN users
ON formofadress.formofadress_ID = users.user_formOfAdress
WHERE `users.ID` = '".$uid."'
LIMIT 1
";
$result = mysqli_query($link, $query);
$record = mysqli_fetch_assoc($result);
$user_formOfAdress = $record['formOfAdress_german'];
}
“FROM formofadress”因为我想输出这个表的先生或者夫人,但我还要使用users表,因为会话ID也是用户记录的id ...
并非user表中的每条记录都有user_formOfdAdress(值1,2或NULL)中的值,但formofadress表中的每条记录都有一个固定值。
错误是: 未定义的变量:位于最后一行的user_formOfAdress
这是我第一次使用JOIN,但遗憾的是,即使经过长时间的搜索,我也无法解决这个问题。
正确的代码:
if(array_key_exists("id", $_SESSION) && $_SESSION['id']){
$uid = $_SESSION['id'];
$link = mysqli_connect("localhost:3307", "root", "Dinah123", "proficrm");
$query = "
SELECT formofadress.ID, formofadress.formOfAdress_german, users.ID, users.user_formOfAdress
FROM formofadress
LEFT JOIN users
ON formofadress.ID = users.user_formOfAdress
WHERE users.ID = '".$uid."'
";
$result = mysqli_query($link, $query);
$record = mysqli_fetch_assoc($result);
$user_formOfAdress = $record['formOfAdress_german'];
}
答案 0 :(得分:0)
您的SQL
语法存在问题。您使用LEFT JOIN
加入users
加入formofadress
,而users
有时无法关注,您可能会获得NULL
值。我还清理了你的其他查询语法,因此它更具可读性。
另外,请检查数据库是否期望INT
为$uid
。如果没有,则返回撇号''
。
if(array_key_exists("id", $_SESSION) && $_SESSION['id'])
{
$uid = $_SESSION['id'];
$link = mysqli_connect("localhost:3307", "root", "Dinah123", "proficrm");
$query = "SELECT u.ID, u.user_formOfAdress, f.ID, f.formOfAdress_german,
FROM users u LEFT JOIN formofadress f ON f.formofadress_ID = u.user_formOfAdress
WHERE u.ID = ".$uid." LIMIT 1";
// if database is not expecting `INT` for `u.ID` then return the apostrophes ' '
$result = mysqli_query($link, $query);
// mysqli_fetch_assoc returns case sensitive keys
$record = mysqli_fetch_assoc($result);
$user_formOfAdress = $record['formOfAdress_german'];
}