Eso es por que en la declaracion de tu funcion no estas pasando la variable
$conn como argumento. Tu función debiera de ser algo asi
Código PHP:
Ver original$user = 'root';
$pass = '';
$conn = new PDO('mysql:host=localhost;dbname=menu_categorias', $user, $pass);
//pasando como argumento $conn
function display_children($parent, $level, $conn) {
$result = $conn->prepare("SELECT a.id, a.label, a.link, Deriv1.Count FROM `menu` a LEFT OUTER JOIN (SELECT parent, COUNT(*) AS Count FROM `menu` GROUP BY parent) Deriv1 ON a.id = Deriv1.parent WHERE a.parent=" . $parent);
$result->execute();
echo "<ul>";
while($row = $result->fetch(PDO::FETCH_ASSOC))
{
if ($row['Count'] > 0) {
echo "<li><a href='" . $row['link'] . "'>" . $row['label'] . "</a>";
display_children($row['id'], $level + 1);
echo "</li>";
} elseif ($row['Count']==0) {
echo "<li><a href='" . $row['link'] . "'>" . $row['label'] . "</a></li>";
} else;
}
echo "</ul>";
}
echo display_children(6, 1);