从PHP中的一个sql请求接收多个列

时间:2012-12-13 00:40:55

标签: php mysql mysqli

我正在处理好友列表功能,我无法弄清楚如何正确接收这些值。

我的代码如下所示:

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

有人能帮助我吗?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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]

调用数组值