2
請解釋一下我爲什麼代碼:PHP - 通過克隆複製類 - 是這個錯誤或即時做錯了嗎?
class kategoria
{
public $IdKat;
public $NazwaKat;
public $OpisKat;
}
class dbClass
{
private $link;
private $user = USER;
private $pass = PASS;
private $database = DATABASE;
function __construct()
{
try
{
$this->link = new mysqli('localhost', $this->user, $this->pass, $this->database);
$this->link->set_charset('utf8');
;
}
catch(Exception $exc)
{
echo $e;
}
}
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();
$output2 = array();
while ($stmt->fetch()) {
array_push($output, $kat->IdKat);
array_push($output2, $kat);
// array_push($output2, clone $kat); // i tried cloning like this
// $output2 += array(clone($kat)); // tried adding
}
$stmt->close();
}
catch (Exception $e)
{
echo $e;
}
echo '<pre>';
print_r($output);
echo '</pre>';
echo '--------------------------<br/>';
echo '<pre>';
print_r($output2);
echo '</pre>';
}
}
使我的數據是這樣的:
Array (
[0] => 2
[1] => 3
[2] => 4)
--------------------------
Array (
[0] => kategoria Object
(
[IdKat] => 4
[NazwaKat] => Hi-Fi
[OpisKat] => Music equipment
)
[1] => kategoria Object
(
[IdKat] => 4
[NazwaKat] => Hi-Fi
[OpisKat] => Music equipment
)
[2] => kategoria Object
(
[IdKat] => 4
[NazwaKat] => Hi-Fi
[OpisKat] => Music equipment
)
)
這是我關於它的第二個問題。我嘗試添加數組,克隆對象$ kat,但它沒有奏效。最後我做了另一個數組,並使用兩者進行調試。
它看起來很奇怪。我不明白爲什麼在數組中克隆的對象在下一行讀取後被覆蓋。它應該是他克隆的副本,對吧?
這裏最大的問題是爲什麼使用bind_result,而您可以通過使用fetch_object創建單個對象。 – 2012-07-10 12:54:47
也許這是錯誤的做法,我沒有經歷過MySQL/PHP編程。我試圖用更「現代」的方法。我已閱讀關於MySQL幫助中的綁定結果。 – Kamil 2012-07-11 15:32:41