php - 如何使用 JOIN 从 PHP 查询 mysql?

标签 php mysql join

我的游戏脚本(php)中有这个代码。这会检查玩家是否装备了车辆,并且它仍然存在。我的代码:

if ($rs[vehicle] != 0) {
    $sql_result2 = mysql_query("SELECT * FROM vehicles WHERE id='$rs[vehicle]'", $db);
     if (mysql_num_rows($sql_result2) == 0) { mysql_query("UPDATE mobsters SET vehicle = 0 WHERE id ='$id'"); }
}

我想编辑此代码,以便如果它确实存在,它还将检查db_vehicles表并找出所述车辆的详细信息(名称、速度等)。一种草率的做法是:

if ($rs[vehicle] != 0) {
    $sql_result2 = mysql_query("SELECT * FROM vehicles WHERE id='$rs[vehicle]'", $db);
     if (mysql_num_rows($sql_result2) == 0) {
         mysql_query("UPDATE mobsters SET vehicle = 0 WHERE id ='$id'"); 
         } else {
         $ = mysql_fetch_array($sql_result2); 
         $sql_result3 = mysql_query("SELECT * FROM db_vehicles WHERE id='$[type]'", $db);
         $ = mysql_fetch_array($sql_result3);
         $name = $[name]; $speed = $[speed];
         }
     }

显然,我想通过 JOIN 来执行此操作,以使用尽可能少的查询。我应该使用哪种连接?

最佳答案

您的代码应该仅使用一个 select 语句,另一个用于更新,这是 select with join:

$sql_result3 = mysql_query("Select dbv.Name, dbv.speed, dbv.type 
                            from db_Vehicles dbv inner join vehicles v 
                             on v.id = dbv.id  WHERE dbv.id='$rs2[type]'"
                            , $db);

顺便说一句,@mc10 说你的代码很容易受到 sql 注入(inject)的影响,所以你会在 SO 中找到很多关于如何防止它的内容,比如 ThisThis

关于php - 如何使用 JOIN 从 PHP 查询 mysql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8282678/

相关文章:

php - 无法从 mysql 数据库获取用户数据

php - 如何显示一张表中不同sql语句的数据?

mysql - 我有一张表 'user' 和一张表 'enc' 。一个用户可以有多个 enc,我只想要 enc 的最新日期。我将如何处理左连接?

php - PHP-->MySQL 中 bool 错误时调用成员函数 bind_param()

Linux 连接实用程序提示输入文件未排序

mysql - 内连接与普通表的外左连接

sql - 错误 : invalid reference to FROM-clause entry for table "r"

php - 有哪些好的软件或脚本可用于管理我们网站上的用户和订阅?

php - 如何在标题 magento 中显示心愿单 block

php - 创建一个 cron 以自动启动数据库播种器