大家好我有一个使用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)
首先,就个人而言,我认为没有必要使用类似的功能 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)