簡體   English   中英

從PHP中的一個SQL請求接收多列

[英]Receive multiple columns from one sql request in PHP

我正在使用朋友列表功能,但無法弄清楚如何正確接收值。

我的代碼如下所示:

$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。

有人可以幫助我嗎?

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

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

好吧,我終於了解了訪存的概念。

為了接收所有值,我必須在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]調用數組值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM