-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メッセージを生成できなくなります...plzヘルプ......

関数を削除した後の別のコードは次のとおりです

<?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 に答える