PHP7/mysql PDO自定义函数

PHP7/mysql PDO自定义函数,php,mysql,function,pdo,Php,Mysql,Function,Pdo,我正在尝试迁移一个用PHP5.2编写的应用程序,但是在为自定义函数创建正确的语法时遇到了问题。这在旧语法中工作得很好,但是我得到了一个致命的错误 本质上,我想创建一个函数,以便从与唯一id关联的数据库表中轻松获取电子邮件地址 function getemail($id) { $email_query = $con->query("SELECT email FROM admin WHERE id='$id'"); $rs = $email_query->fetch(P

我正在尝试迁移一个用PHP5.2编写的应用程序,但是在为自定义函数创建正确的语法时遇到了问题。这在旧语法中工作得很好,但是我得到了一个致命的错误

本质上,我想创建一个函数,以便从与唯一id关联的数据库表中轻松获取电子邮件地址

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>';
}
foreach($con->query('SELECT*FROM admin')作为$row){
echo$row['id'].'..$row['name'.'.'.'.getemail($row['id'])。
; }

我们非常感谢您提供的任何帮助。

好的,我有一个用于这种转换的工具,它将旧mysql函数的简单性与PDO的安全性结合起来(如果使用得当)——

设置好后,您只需编写如下代码:

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

echo getemail(1); // admin@example.com

您正在函数内部引用
$con
,而没有将其作为参数传递。这是一个全局编号。在循环中执行查询也是一个
no
SELECT email FROM admin WHERE id in(…)
在一个查询中获取您想要的任意多个特定行,not N queries.WARNING:当使用PDO时,您应该使用准备好的语句,并将任何用户数据作为单独的参数提供,因为您在这段代码中有严重错误。不要使用字符串插值或串联,而是使用。有关此问题和其他问题的指导,请参阅。在该循环中,您只需使用
“”$行['email']。'
:S