-1

我在调用我的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 消息......请帮助......

这是删除功能后的另一个代码

<?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();
}

?>        
4

1 回答 1

2

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

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

或者使用以下global方法:

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

有关手册上的变量范围的更多信息。


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

致命错误:在...中的非对象上调用成员函数 query()

于 2013-01-17T07:15:58.247 回答