用户定义的函数在php中不起作用

时间:2013-01-17 07:13:52

标签: php function pdo unique-id

我在调用rand_id()函数时遇到问题。这里是代码

<?php 
try

{

$config=array(
'DB_USERNAME'=>'root',
'DB_PASSWORD'=>'');


$conn=new PDO('mysql:host=localhost;dbname=scc',$config['DB_USERNAME'],$config['DB_PASSWORD']); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo rand_id(); 

}

catch(Exception $e)
{
echo 'error: '.$e->getMessage();
}

function rand_id()
{

$id=rand(100,103);          //i have record with id ='100'
$results=$conn->query("select id from student_personal_info where id='".$id."'");

if($results->rowCount()>0)
{   
rand_id();
}
else
{
return "this is unique id";
}
}
?>        

但如果我删除该函数并检查此代码是否正常工作但现在我在使用数据库检查后无法生成唯一的id消息... plz help ......

这是移除功能

后的另一个代码
<?php 

try
{
$config=array(
'DB_USERNAME'=>'root',
'DB_PASSWORD'=>'');

$conn=new PDO('mysql:host=localhost;dbname=scc',$config['DB_USERNAME'],$config['DB_PASSWORD']); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$id=rand(100,103);          //i have record with id ='100'
$results=$conn->query("select id from student_personal_info where id='".$id."'");

if($results->rowCount()>0)
{   
echo  "generate again";
}
else
{
echo  "this is unique id";
}
}
catch(Exception $e)
{
echo 'error: '.$e->getMessage();
}

?>        

1 个答案:

答案 0 :(得分:2)

您的数据库对象$conn超出了rand_id()函数的范围。您可以将其作为参数传递:

function rand_id($conn)
{
    // ...
}

或使用global方法:

function rand_id()
{
    global $conn;
    // $conn is now accessible
}

有关Variable Scope on the Manual的更多信息。


为了将来的调试,请记得检查错误日志。在这种情况下,你应该有类似的东西:

  

致命错误:在...

中的非对象上调用成员函数query()