2012-12-13 11 views
0

我正在處理朋友列表功能,我無法弄清楚如何正確接收值。從PHP中的一個SQL請求接收多個列

我的代碼如下所示:

$getuid = $mysqli->prepare("SELECT `uid` FROM `users` WHERE name = ? OR name = ?"); 
$getuid->bind_param("ss", $user, $friend); 
$getuid->execute(); 
$getuid->bind_result($uid); 
$getuid->fetch(); 
$getuid->close(); 
$resetpass = $mysqli->prepare("INSERT INTO `friendlist` SET `friend1`=?, `friend2`=?, `accept`=0"); 
$resetpass->bind_param("ss", $uid[0], $uid[1]); 

隨着第一個查詢我得到整整兩個UID值回。我想在第二個查詢中使用它們。看起來好像bind_result不起作用,既不是陣列,也不是在bind_result中使用兩個值時。我如何使用mysqli來做到這一點。我不能使用get_result,因爲我在PHP 5.2上。

任何人都可以幫助我嗎?

+0

調用數組值你是如何從你的第一個查詢了整整兩個UID列回:'選擇從UID users' ??這不僅僅是一列嗎? –

+0

對不起,我的意思是來自一列的兩個值。 – Lotzki

回答

0

好吧我終於明白了fetch的概念。

爲了接收我必須在while循環中檢索它們的所有值。

這裏是解決方案:

$getuid = $mysqli->prepare("SELECT `uid` FROM `users` WHERE name = ? OR name = ?"); 
$getuid->bind_param("ss", $user, $friend); 
$arra = array(); 
$getuid->execute(); 
$getuid->bind_result($uid); 
while ($getuid->fetch()) { 
    $arra[] = $uid; 
} 

現在我可以用$arra[0]$arra[1]

0

我認爲你需要這樣的東西。我還沒有測試過,可能還有更好的方法來做到這一點。我只是嘗試了我可以對原始代碼進行的最快更改,以使其正常工作。

$query = "SELECT uid FROM users WHERE name = '".$user."' OR name = '".$friend."'"; 
$getuid = $mysqli->query($query); 
if($uid = $getuid->fetch_assoc()) 
    { 
    $query = "INSERT INTO friendlist SET friend1= '".$uid['uid'][0]."', friend2='".$uid['uid'][1]."', accept=0"; 
    $mysqli->query($query) 
    } 
$getuid->close(); 
+0

這不幫助我。就像我提到的,我不能使用'get_result' – Lotzki

+0

抱歉,應該讀得更好。問題:您是否可以從其他位置獲取$用戶,如cookie或會話。一個插入我從我的會話中獲得$用戶,它允許我以這樣一種方式放入數據庫,我知道誰要求友誼。也許有一點關於你的桌子結構,我會幫你的。 –

+0

恐怕不是,我正在使用sql數據庫來存儲我的android應用程序的用戶數據。我還將姓名和電子郵件存儲在手機上的sqlite數據庫中,這僅用於檢查用戶是否已登錄(登出時表會被破壞)。我可以從數據庫中返回uid,並在登錄時將其放入sqlite基礎中。但我希望這不是必需的。 現在我正在通過爲每個uid執行兩個查詢來解決這個問題。它的工作原理,但我希望找到一個更優雅的方式,因爲它們可以在一個查詢中返回,但我不知道如何在PHP中檢索它們。 – Lotzki