0

要使用函数的结果填充下拉列表,我执行了以下操作:

function tree($root) { 
$n=0;
$result = $conn->prepare("SELECT id FROM personne WHERE emp_id='$root' ORDER BY     id"); 
$result->execute();
while ($row = $result->fetch(PDO::FETC_ASSOC)) {
$n = $n+1;
echo "<option>".$row['id']."</option>"; 
tree($row['id'], $n+1); 
}   
}

但我得到了这个错误:

注意:未定义变量:第 59 行 C:\wamp\www\page.php 中的 conn

为了摆脱上述问题,我做了这个改变:

function tree($root, $connection) { 
$n=0;
$result = $connection->prepare("SELECT id FROM personne WHERE emp_id='$root' ORDER BY     id"); 
$result->execute();
while ($row = $result->fetch(PDO::FETC_ASSOC)) {
$n = $n+1;
echo "<option>".$row['id']."</option>"; 
tree($row['id'], $n+1); 
}   
}

现在,我面临这个问题:

致命错误:在第 59 行的 C:\wamp\www\page.php 中的非对象上调用成员函数 prepare()

感谢帮助

4

1 回答 1

1

您的初始函数是正确的,只是$conn变量是在函数范围之外启动的。要解决此问题,请使用global将其置于上下文中:

尝试这个:

function tree($root) { 
global $conn;
$n=0;
$result = $conn->prepare("SELECT id FROM personne WHERE emp_id='$root' ORDER BY     id"); 
$result->execute();
while ($row = $result->fetch(PDO::FETC_ASSOC)) {
$n = $n+1;
echo "<option>".$row['id']."</option>"; 
tree($row['id'], $n+1); 
}   
}
于 2013-10-29T10:27:58.837 回答