2013-08-31 52 views
0

谁能告诉我在哪里,我在这个小PHP代码片段PHP PDO取指不与功能工作

的config.php

$sql = "SELECT * FROM sidemenu;"; 
$q = $conn->query($sql); 

PHP在我的HTML文件脚麻

$q->setFetchMode(PDO::FETCH_NUM); 
while($r = $q->fetch()){ 
    echo " 
    <li> 
     <a class='gn-icon ".mysql_real_escape_string($r[0])."'>".mysql_real_escape_string($r[1])." 
     </a> 
    </li>"; 
} 

现在这个代码片段可以正常工作,并按照预期从数据库中为我生成列表项。 但现在当我尝试这样的事情

$q->setFetchMode(PDO::FETCH_NUM); 
function mainMenu(){ 
while($r = $q->fetch()){ 
    echo " 
    <li> 
     <a class='gn-icon ".mysql_real_escape_string($r[0])."'>".mysql_real_escape_string($r[1])." 
     </a> 
    </li>"; 
} 
} 
mainMenu(); 

现在这种出于某种原因不工作,现在我不知道PHP的很清楚,只是学到了一些数据库的集成,所以请如果任何人都可以告诉我怎么错复制。 ..

回答

0

这是因为mainMenu()函数变量之外不可内的范围,你需要传递变量参数,如:

mainMenu($q); 

请参阅更多关于Variable Scope

另外,输出数据时不需要mysql_real_escape_string()

+0

哦,我补充说,由于我在我的db值中有一些特殊字符,当它们在原始文件中出现时会引起一些麻烦,并且感谢您的答复,我根本没有这样想,仍然与传统混淆全球范围:p – DeadMan