2016-04-27 11 views
-4

PHP 5.2で書かれたアプリケーションを移行しようとしていますが、カスタム関数の正しい構文を作成できません。これは完全に古い構文で動作しますが、私はこれで致命的なエラーが発生します。PHP7/mysql PDOカスタム関数

本質的に、ユニークなIDに関連付けられたデータベーステーブルから電子メールアドレスを簡単に取得できるようにする関数を作成したいと考えています。私は以下のコードをPHP 5.2で動作するものに基づいて記述しました。

function getemail($id) { 
    $email_query = $con->query("SELECT email FROM admin WHERE id='$id'"); 
    $rs = $email_query->fetch(PDO::FETCH_ASSOC); 

    return $rs; 
} 

次に、この関数を呼び出すために次のようなものを使用できます。

foreach($con->query('SELECT * FROM admin') as $row) { 
    echo $row['id'] . ' ' . $row['name'] . ' ' . getemail($row['id']) . '<br>'; 
} 

この問題を解決するためのあらゆる方向性は非常に高く評価されています。 (適切に使用している場合)

+5

のように呼ばれます。それはグローバルではありません。 –

+2

ループ内でクエリを実行することも 'no-no'です。 –

+1

'SELECT email FROM admin WHERE id IN(...)'は、N個のクエリではなく、1つのクエリで必要な数だけ特定の行を取得します。 – tadman

答えて

1

[OK]を、私はPDOの安全性を持つ古いMySQLの機能のシンプルさを兼ね備えたこのような遷移、のためのツールを持っている - Simple yet efficient PDO wrapper

はそれを設定したので、あなたが必要とするすべてのコードのようですこれは:

function getemail($id) { 
    return DB::run("SELECT email FROM admin WHERE id=?", [$id])->fetchColumn(); 
} 

あなたがパラメータとして渡さずに、関数の内部で `$のcon`を参照しているこの

echo getemail(1); // [email protected]