1

大家好,我有一个使用 mysql_* 构建的程序,出于安全和贬值的原因,我正在尝试将其转换为 PDO

所以我有很多 mysql_* 函数设置,比如

return select_from_where('users', '*', "username = '$username' AND password = '$pass'", "LIMIT 1");

我已转换为 PDO

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

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

我的问题是,我是否必须将 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'];
4

2 回答 2

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();

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

于 2013-05-14T13:59:36.750 回答
0

改变这个

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

至:

$username = 'user';
$password ='password';
$stmt =$conn->prepare("SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1");
$stmt->execute(array($username, $password));
echo $stmt->rowCount();
于 2013-05-14T13:57:28.460 回答