我需要从两个表中获取数据,但我知道这是一个更好,更整洁的方法。我需要某种JOIN吗?
我会告诉你我的代码,你会明白我的意思:
if ($rs[firearm] != "") {
$sql_result2 = mysql_query("SELECT * FROM db_firearms WHERE name='$rs[firearm]'", $db);
$rs2 = mysql_fetch_array($sql_result2);
$sql_result3 = mysql_query("SELECT * FROM items_firearms WHERE player='$id'", $db);
$rs3 = mysql_fetch_array($sql_result3);
if ($rs3[$rs2[shortname]] < 1) {
mysql_query("UPDATE mobsters SET firearm = '' WHERE id ='$id'");
}
}
答案 0 :(得分:0)
这个问题很清楚,但是您的代码示例有很多格式问题,根据您的示例代码,我无法直接给您答案。
原因,为什么你的例子不清楚,是因为..你打算加入哪些表?从一个表中选择name='$rs[firearm]'
,另一个表由player='$id'
选择。您必须提供隐藏数据,例如$rs
和$id
。
您一定要阅读有关mysql join和mysql left join的内容。但我会尝试使用固定语法为您提供基于代码的示例。 (请记住,我不是mysql加入专家,我没有测试这段代码,也不知道加入条件。)而且,系统结构还不清楚。
据我了解,这就是你的表所做的,对吗?
基本上,我的示例是这样做的:它将从 users 表中预加载$rs
值。它将检查 links 表中是否有条目,并将结果与它们挂钩 items 表。但是,如果 links 表或甚至 items 表可以返回多个条目,那么这不起作用,您需要以更智能的方式循环结果。< / p>
// I can only assume, that $id is the ID of the player
$id = 2;
// Since I dont know the $rs value, then Im going to make some up
$rs = array(
'id' => 33,
'firearm' => 'famas'
);
if ($rs['firearm']) {
$result = mysql_fetch_array(mysql_query("SELECT ifa.*, dbfa.* FROM `items_firearms` AS `ifa` LEFT JOIN `db_firearms` AS `dbfa` ON `ifa.shortname` = `dbfa.shortname` WHERE `ifa.player` = '$id'"));
if ($result['id']) {
mysql_query("UPDATE `mobsters` SET `firearm` = '' WHERE `id` = '$id'", $db);
}
}
很明显,你是PHP和mysql的新手。所以我认为你应该编辑你的问题并谈谈你的更高目标。简而言之,您正在构建的应用程序是什么?你想用mysql查询做什么..?也许提供你的mysql表的表结构..?我敢肯定,你会把你的问题投票恢复正常,我们也可以帮助你更好。
备注强>
$rs[firearm]
- &gt; $rs['firearm']
$rs[firearm] != ""
。最简单的是if ($rs['firearm']) {echo 'foo';}
,但会在所有错误报告模式时生成通知消息。您可以使用isset()
和empty()
,但请记住,isset()
检查变量是否已设置。含义,即使其为false,也已设置。 empty()
对未定义和空变量的响应相同,没有任何消息。""
表示NULL
,因此如果您甚至需要使用""
,请使用NULL
代替...更简洁的方式.. if ($rs3[$rs2[shortname]] < 1) { ..
没有意义..你想检查值是否为空?然后(简单):if (!$rs3[$rs2[shortname]]) { ..
和一个非常严格的标准:if (empty($rs3[$rs2[shortname]])) { ..