Как я могу использовать JOIN для запроса MySQL из PHP? - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть этот код в моем игровом скрипте (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, чтобы использовать как можно меньше запросов. Какой тип соединения я должен использовать?

1 Ответ

1 голос
/ 27 ноября 2011

Ваш код должен использовать только один оператор выбора и другой для обновления, это выбор с соединением:

$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, так что здесь, в SO, вы найдете много вещей о том, как его предотвратить, например Это и Это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...