Php 在MySQLi中将准备好的语句作为函数参数传递
在这里,我想将准备好的语句作为测试函数的参数传递,该函数应该显示查询结果。但是下面的代码不起作用,因为它可能缺少一些我不知道的内容。为了通过测试函数显示结果,我应该做些什么:Php 在MySQLi中将准备好的语句作为函数参数传递,php,mysqli,Php,Mysqli,在这里,我想将准备好的语句作为测试函数的参数传递,该函数应该显示查询结果。但是下面的代码不起作用,因为它可能缺少一些我不知道的内容。为了通过测试函数显示结果,我应该做些什么: <?php $mysqli = new mysqli("localhost","root","","test"); /*check connection*/ if(mysqli_connect_errno()) { printf("connection failed: %s\n",mysql
<?php
$mysqli = new mysqli("localhost","root","","test");
/*check connection*/
if(mysqli_connect_errno())
{
printf("connection failed: %s\n",mysqli_connect_error());
exit();
}
/*create prapared statement*/
$stmt1 = $mysqli->prepare("select id from posts");
$stmt2 =$mysqli->prepare("select username from members where id=?");
$stmt1->execute();
$stmt1->store_result();
$stmt1->bind_result($ID);
/*bind params*/
$stmt2->bind_param('i',$id);
/*bind results*/
$stmt2->bind_result($username);
while($stmt1->fetch())
{
/*set params*/
$id =$ID;
/*execute prapared statement*/
$stmt2->execute();$stmt2->store_result();
}
test($stmt1,$stmt2);//function call
function test($stmt1,$stmt2)
{
while($stmt1->fetch())
{
while($stmt2->fetch())
{
echo 'Username: '.$username.'<br/>';
}
}
}
?>
我认为这种方法可能不是轻量级的解决方案,但您可以使用
mysqli\u result::data\u seek()
方法重置结果指针,并且当您再次需要结果变量时,您必须重新绑定它:
function test($stmt1, $stmt2)
{
$stmt1->data_seek(0);
while($stmt1->fetch())
{
$stmt2->data_seek(0);
$stmt2->bind_result($username);
while($stmt2->fetch())
{
echo 'Username: '.$username.'<br/>';
}
}
}
test($stmt1, $stmt2);
或者另一种方式可以是这样的:
$res1 = $stmt1->get_result(); // here you can use get_result() to get the resultset
$myAy = array();
while($row = $res1->fetch_array())
{
$myAy[] = $row;
}
var_dump($myAy);
...
$myAy = array();
while ($stmt1->fetch())
{
$id = $ID;
$myAy['id'] = $ID;
...
}
while ($stmt2->fetch())
{
$myAy['user'] = $username;
}
var_dump($myAy);
只有我的两分钱…您已经
获取了所有$stmt1
结果<代码>获取
如果不倒带结果集,则再次读取它们将无效。谢谢。。但是我该怎么做呢@Nietthedark绝对感谢你。。。。你能告诉我如何将两个结果集存储在两个数组@ilpaijin中吗