Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php代码,获取sql数据的更好方法_Php_Sql_Join - Fatal编程技术网

php代码,获取sql数据的更好方法

php代码,获取sql数据的更好方法,php,sql,join,Php,Sql,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_que

我需要从两个表中获取数据,但我知道有一种更好、更整洁的方法。这是我需要的某种加入吗

我将向您展示我的代码,您将了解我的意思:

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'");
    }
}
if($rs[火器]!=“”){
$sql_result2=mysql_查询(“从数据库中选择*名称='$rs[firearm]”,$db);
$rs2=mysql\u fetch\u数组($sql\u result2);
$sql_result3=mysql_查询(“从项目中选择*”,其中播放器=“$id'”,$db);
$rs3=mysql\u fetch\u数组($sql\u result3);
如果($rs3[$rs2[shortname]]]<1){
mysql_查询(“更新mobsters SET firearm=”,其中id=“$id”);
}
}

这个问题很清楚,但是您的代码示例有很多格式问题,基于您的示例代码,我无法给您直接的答案

你的例子不清楚的原因是。。你打算用什么加入这些表格?从一个表中,您通过
name='$rs[firemarm]'
进行选择,从另一个表中,您通过
player='$id'
进行选择。您必须提供隐藏数据,如
$rs
$id

你绝对应该阅读这些关于和。但我将尝试根据您的代码给出一个示例,使用固定语法。(请记住,我不是mysql连接专家,我没有测试这段代码,也不知道连接条件。)而且,系统结构也不清楚

据我所知,这就是你们桌子的功能,对吗

  • 暴徒-用户表
  • 项目\u-从用户表到项目表的链接
  • db_火器-项目表
因此,我的示例基本上是这样做的:它将从用户表中预加载
$rs
值。它将检查links表中是否有条目,并将结果与items表挂钩。但是,如果links表甚至items表可以返回多个条目,那么这就不起作用了,您需要以更智能的方式循环结果

// 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[firemarm]
    ->
    $rs['firemarm']
  • 如果你想检查你的$rs['firearm']是否等于某物,那么有一个比
    $rs[firearm]更好的方法“”
    。最简单的是
    if($rs['firemarm']){echo'foo';}
    ,但在所有错误报告模式下,都会生成一条通知消息。您可以使用and,但请记住,它检查变量是否已设置。。意思是,即使它是假的,那么它已经被设置好了。对未定义和空变量的响应相同,没有任何消息
  • 另外,
    的意思是
    NULL
    ,所以如果你甚至需要使用
    ,那么就改用
    NULL
    ,这样更简洁了
  • 我强烈建议使用mysql类。你可以从中了解这个想法背后的基本原理。这会让事情变得更容易。此外,mysql类是处理动态应用程序时必须具备的
  • if($rs3[$rs2[shortname]]<1){..
    没有意义..是否要检查该值是否为空?然后(简单):
    if(!$rs3[$rs2[shortname]]){..
    和一个非常严格的标准:
    if(empty($rs3[$rs2[shortname]]){..
  • 您还必须引用sql查询,请参见上面的示例
  • 最后一个mysql查询是否缺少$db

请发布第一个查询。我不知道您想做什么,因为您没有对代码进行注释,也没有告诉我们您的表布局。但看起来您试图根据另一个查询结果的值选择特定的数据库列,这听起来是一个非常糟糕的主意。为什么这是一个糟糕的主意?是不是你还有别的办法吗?