2016-07-27 59 views
0

我需要幫助。我在mysqli中有一個樹代碼,我試圖把它翻譯成PDO語句。有什麼建議?由於之前樹節點MySQL到PDO聲明

PHP:

while($row = mysql_fetch_array($rs)){ 
      $node = array(); 
      $node['id'] = $row['id']; 
      $node['text'] = $row['name']; 
      $node['state'] = has_child($row['id']) ? 'closed' : 'open'; 
      array_push($result,$node); 
     } 

    function has_child($id) 
    { 
    $rs = mysql_query("select count(*) from 
    nodes where parentId=$id"); 
    $row = mysql_fetch_array($rs); 
    return $row[0] > 0 ? true : false; 
    } 

創建表的SQL:

CREATE TABLE `nodes` (
      `id` int(11) NOT NULL AUTO_INCREMENT, 
      `parentId` int(11) DEFAULT NULL, 
      `name` varchar(50) DEFAULT NULL, 
      PRIMARY KEY (`id`) 
     ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; 

插入SQL:

INSERT INTO `nodes` VALUES 
    ('1', '0', 'Node 1'), 
    ('2', '0', 'Node 2'), 
    ('3', '0', 'Node 3'), 
    ('4', '0', 'Node 4'), 
    ('5', '1', 'Node 1.1'), 
    ('6', '1', 'Node 1.2'), 
    ('7', '5', 'Node 1.1.1'), 
    ('8', '5', 'Node 1.1.2'), 
    ('9', '5', 'Node 1.1.3'); 
+0

您需要將該代碼塊轉錄爲PDO?很可能你會改變你的代碼的其他部分,也包括連接 – Ghost

+0

你沒有使用'mysqli',而是使用'mysql_ *',但是你顯示的代碼在PDO中幾乎是一樣的。您仍然需要獲取並從'$ row'數組訪問結果。 – chris85

+0

您可以簡單地返回邏輯操作的值,不需要三元組將「真」變爲「真」。 – tadman

回答

0
$result=array(); 
try{ 
$query->execute(); 
while($row =$query->fetch(PDO::FETCH_ASSOC)){ 
$node = array(); 
$node['id'] = $row['id']; 
$node['text'] = $row['name']; 
$node['state'] = $this->has_child($row['id']) ? 'closed' : 'open'; 
array_push($result,$node); 
} 
}catch(PDOException $e){ 
    die($e->getMessage());} 
    return json_encode($result);  
} 

謝謝大家....