2011-11-27 166 views
0

我在遊戲腳本(php)上有這段代碼。這將檢查玩家是否有裝備的車輛,並且它仍然存在。我的代碼:如何使用JOIN從PHP查詢MySQL?

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使用盡可能少的查詢。我應該使用什麼樣的連接?

+0

你的代碼很容易SQL注入;請使用PDO並準備好查詢。 – mc10

+0

我不明白這是什麼意思 – user1022585

回答

1

您的代碼應該只使用一個select語句,另一個用於更新,這是選擇以加盟:

$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); 

BTW爲@ MC10說你的代碼很容易受到SQL注入,所以你會發現很多的東西這裏在SO關於如何防止它像ThisThis

+0

然後'if(mysql_num_rows($ sql_result3)== 0){mysql_query(「UPDATE mobsters SET vehicle = 0 WHERE id ='$ id'」); }'? – user1022585

+0

是的,你不能在一個語句中完成這兩件事情,所以你需要兩個不同的sql語句。 –