返回PDO数据

Cod*_*rrr 1 php mysql pdo

大家好我有一个使用mysql_*构建的程序,我试图将其转换为PDO,以确保安全性和折旧

所以我有一个像mysql_*函数设置的负载

return select_from_where('users', '*', "username = '$username' AND password = '$pass'", "LIMIT 1");
Run Code Online (Sandbox Code Playgroud)

我已经转换为PDO

return $conn -> query("SELECT * FROM users WHERE username = '$username' AND password = '$pass' LIMIT 1");
Run Code Online (Sandbox Code Playgroud)

但是程序没有提供正确的结果,我不确定它是否甚至返回数据

我的问题是,我是否必须将PDO响应设置为我可以使用的变量,或者是否可以使用与上面类似的方法返回我可以在程序中使用的值?

我为每个函数查询都包含了全局$ conn,所以我确定它是应该连接的,它只是没有按预期提供结果.

有没有人能快速解决这个问题,因为我的程序已经完成并正在等待发布:D

提前致谢

卢克

** 编辑线 *

$sql = ("SELECT * FROM users WHERE username = '$username' AND password = '$pass' LIMIT   1");
$stm = $conn->prepare($sql);
$stm->execute(array($username,$pass)); $user = $stm->fetch(); echo $user['username'];
Run Code Online (Sandbox Code Playgroud)

You*_*nse 5

首先,就个人而言,我认为没有必要使用类似的功能 select_from_where

你实际上没有保存任何东西 - 你只是将"SELECT,FROM和WHERE"字样从查询移到了函数名称,但是这个功能非常有限 - 比方说,没有连接或东西.

其次,PDO::query()不应该使用函数 - 它不支持预处理语句.

所以,代码必须是

global $conn;
$sql = "SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1";
$stm = $conn->prepare($sql);
$stm->execute(array($username,$pass));
return $stm->fetch();
Run Code Online (Sandbox Code Playgroud)

您还必须配置PHP和PDO,以便能够查看发生的每个错误.