绑定到类属性并获取到数组-php mysqli bind_result
我试着这样做:绑定到类属性并获取到数组-php mysqli bind_result,php,mysqli,bind,prepare,Php,Mysqli,Bind,Prepare,我试着这样做: class kategoria { public $IdKat; public $IdKatNad; public $NazwaKat; } function get_cats() { $query = "SELECT IdKat, NazwaKat, OpisKat FROM `kategorie`"; try { $stmt = $this->link->prepare($query
class kategoria
{
public $IdKat;
public $IdKatNad;
public $NazwaKat;
}
function get_cats()
{
$query = "SELECT IdKat, NazwaKat, OpisKat FROM `kategorie`";
try
{
$stmt = $this->link->prepare($query);
/* bind parameters for markers */
//$stmt->bind_param("i", $idKat);
$stmt->execute();
$kat = new kategoria();
$stmt->bind_result(
$kat->Idkat,
$kat->NazwaKat,
$kat->OpisKat
);
$output = array();
while ($stmt->fetch()) {
$output += array(clone $kat);
}
$stmt->close();
}
catch (Exception $e)
{
echo $e;
}
echo '<pre>';
print_r($output);
echo '</pre>';
}
在末尾-我只有数组中的最后一行。为什么?当我尝试使用数组和2个字段时,并没有使用kategoria类,这是可行的,但我需要将查询结果放入表示表行的对象数组中。我做错了什么?我是PHP新手
$output[] = array(clone $kat); // or array_push($output, array(clone $kat));
如果试图附加到$output数组,则语法为
$output += array(deserialize(serialize($kat)));
在PHP中将数组添加到一起会将它们合并在一起,这似乎不是您想要的 我必须序列化和反序列化绑定到结果集的类
进一步阅读:array_merge vs array union operator:我有两个疑问。你为什么要使用arrayclone$kat。它不应该只是“=clone$kat”。而克隆只能进行浅层复制。那么,在上述情况下,这段代码会起作用吗?@WordsWorth我只是使用了OP代码中相同的赋值。我不知道他对它的意图是什么,因为他只是在打印它。数组推送正在工作,数组在增长,但现在我有许多只从表的最后一行创建的对象。克隆不起作用?我需要在我的while循环?@Kamil中创建变量,因为你在循环结果,但一遍又一遍地克隆同一个$kat对象。您需要在循环中分配$kat,以便在将其附加到数组之前更改它。
$output += array(deserialize(serialize($kat)));