2014-06-10 28 views
0

我有一個SELECT語句,根據其中一個字段的值抽取有限數量的項目。 (即ORDER BY率限制15)。我可以在PHP和度假村中更改SQL數組中的值嗎?

但是,我需要做一些比較,並改變比率的價值,隨後可以改變我想要的結果。

我可以拉一切(沒有限制),改變速度,重新排序,然後只處理我需要的數字。但是,我不知道是否有可能改變PHP結果數組中的值。我使用的是:

$query_raw = "SELECT dl.dragon_list_id, dl.dragon_id, dl.dragon_name, dl.dragon_level, d.type, d.opposite, d.image, dr.dragon_earn_rate 
FROM dragon_list dl 
LEFT JOIN dragons d ON d.dragon_id = dl.dragon_id 
LEFT JOIN dragon_rates dr ON dr.dragon_id = dl.dragon_id 
    AND dr.dragon_level = dl.dragon_level 
WHERE dl.dragon_id IN (
         SELECT dragon_id 
         FROM dragon_elements 
         WHERE element_id = 3 
         ) 
    AND dl.dragon_list_id NOT IN (
           SELECT dh.dragon_list_id 
           FROM dragon_to_habitat dh, dragon_list dl 
           WHERE dl.user_id = 1 
           AND dh.dragon_list_id = dl.dragon_list_id 
           AND dl.is_deleted = 0 
           ) 
    AND dl.user_id = " . $userid . " 
    AND dl.is_deleted = 0 
ORDER BY dr.dragon_earn_rate DESC, dl.dragon_name 
LIMIT 15;"; 

$query = mysqli_query($link, $query_raw); 
if (!$query) { 
    echo "DB Error, could not query the database\n"; 
    echo 'MySQL Error: ' . mysqli_error($link); 
    exit; 
} 
$d = mysqli_fetch_array($d_query); 
+0

你到底在問什麼?你想改變'$ d'中的值並將它們更新到數據庫中嗎?如果是這樣,你需要有單獨的SQL語句來更新數據庫。對PHP中結果集的更改不會自動返回到數據庫中。 – vhu

+0

另外,看看https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1 – vhu

+0

我不想更新數據庫本身。數據庫具有基本費率,我需要根據特定標準計算新費率。所以我不需要數據庫中的新速率,但是如果我可以改變結果數組,然後使用數組,並重置它,所以我的while循環將從頭開始,這將工作。 – Dizzy49

回答

0

好了,經過大量的研究和一些試驗和錯誤,我發現我的答案....

是的,我可以用類似改變結果行:

$result['field'] = $newvalue; 

我也學會了,我可以通過指針復位:

mysqli_data_seek($d_query,0); 

然而,當我重新計數呃,我失去了我所做的改變。所以最終,我仍然有點卡住,但個別我有答案。

相關問題