上下文:我在查詢數據庫以返回指定數量的怪物,用於在簡單的基於Web的RPG中的戰鬥中使用。使用PHP循環多次查詢MYSQL數據庫
問題:我有一個簡單的MYSQL查詢,它包含一個WHERE子句來確定怪物的「級別」。在前面的函數中,我正在構建一個包含應該返回的相應怪物級別的數組;像這樣:
$levels = Array([0] => 3 [1] => 1 [2] => 1)
所以在上面的數組中,值對應的級別。所以我期待返回3個怪物 - 等級3,等級1和等級1.
夠簡單。現在我想用下面的語句來查詢MYSQL,並且可能使用一個循環來執行查詢3次以獲得我的3個怪物;例如:
$query = "SELECT *, CardHP as EncounterCardHP, CardAP as EncounterCardAP";
$query .= " FROM Cards";
$query .= " WHERE CardTypeId = 1 AND CardRarity = {$level}";
$query .= " ORDER BY RAND() LIMIT 1";
所以在上面的查詢中,變量{$ level}是前一個數組的怪物級別。循環格式是我掙扎的地方。我想是這樣的:
while ($i = $levels) {
$query = "SELECT *, CardHP as EncounterCardHP, CardAP as EncounterCardAP";
$query .= " FROM Cards";
$query .= " WHERE CardTypeId = 1 AND CardRarity = {$i}";
$query .= " ORDER BY RAND() LIMIT 1";
$result_set = mysql_query($query, $connection);
confirm_query($result_set);
return $result_set;
}
我認爲這是接近,但我沒有看到我怎麼能得到這個最終使我從MySQL的怪物單個陣列。在上面看來,我正在構建3個獨立的數組?我是否需要使用array_merge(),還是有更簡單更優雅的方法來做到這一點?如果我得到所有相同等級的怪物,我可以簡單地運行查詢1次和極限3,但我需要怪物來對應前面的數組顯示。
有意義嗎?總是感謝幫助。
[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ) – vanneto
好的,謝謝。這個項目已經出現了,所以我一直在拖着去升級它。但我會做這項工作來了解變化。謝謝。 –