Php 返回PDO数据

Php 返回PDO数据,php,mysql,pdo,Php,Mysql,Pdo,大家好,我有一个使用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

大家好,我有一个使用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响应设置为我可以使用的变量,或者是否有可能让它返回我可以在我的程序中使用的值,使用与上面类似的方法

我已经为每个函数查询包含了global$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'];
改变这个

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

改变这个

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


首先,我个人认为像
select\u from\u 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();

您还必须首先

,就我个人而言,我认为没有必要使用像
select\u from\u其中

实际上,您并没有保存任何内容—您只是将单词“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核心函数的_中选择_。很可能它结合了
mysql\u query
mysql\u fetch
。您需要在PDO中获取行。以这种方式使用PDO并不安全。
select_from_,其中
不是PHP核心函数。很可能它结合了
mysql\u query
mysql\u fetch
。你需要在PDO中获取行。以这种方式使用PDO并不能保证它的安全。基于此,你认为拥有这些功能是否值得,我实际上雇佣了一些人在我的网站上配置一些东西,他们从PDO“更新”到mysql,所以我必须回去更改它。。每个连接到数据库的功能都保存在一个文件中以保持其有序性,我将连接到数据库的功能保存在两个单独的文件中,一个用于设置数据库用户名和密码,另一个是使用预设的用户名和密码变量进行实际连接。如果我更改程序,使pdo连接只在实际程序代码中使用的地方找到,您认为这是一个更好的主意吗,或者,我可以使用您上面给出的代码,在每次需要访问数据库的那部分时调用函数的形式吗?既然如此,它会像它所支持的那样提供数据吗?我为我的无知道歉,我显然不是PHP大师,但我正在努力学习并了解连接类型,尤其是PDO@LukeWatson是的,一般来说功能都很好。但是PDO对于这些琐碎的查询非常好,所以,我认为您不需要运行QueriesOK只是为了澄清-使用查询是不好的,因为语句没有准备好,因此容易受到SQL注入的影响,所以使用准备好的查询可以防止这种情况,因为它们无法直接编辑SQL查询?如果我没有使用函数如何访问查询中的数据,我将发布我所做的(不起作用)以查看您是否知道如何修复它,这是一个更大的函数Login()的一部分啊,我知道了,对不起,您设置了?标记并在执行中告诉它要使用什么数据,这很有意义:)我的程序现在几乎可以运行了,非常感谢你的帮助基于此,你认为它甚至值得拥有这些功能吗?我实际上雇佣了一些人在我的网站上配置一些东西,他们从PDO“更新”到mysql,所以我必须回去更改它。。每个连接到数据库的功能都保存在一个文件中以保持其有序性,我将连接到数据库的功能保存在两个单独的文件中,一个用于设置数据库用户名和密码,另一个是使用预设的用户名和密码变量进行实际连接。如果我更改程序,使pdo连接只在实际程序代码中使用的地方找到,您认为这是一个更好的主意吗,或者,我可以使用您上面给出的代码,在每次需要访问数据库的那部分时调用函数的形式吗?既然如此,它会像它所支持的那样提供数据吗?我为我的无知道歉,我显然不是PHP大师,但我正在努力学习并了解连接类型,尤其是PDO@LukeWatson是的,一般来说功能都很好。但是PDO对于这些琐碎的查询非常好,所以,我认为您不需要运行QueriesOK只是为了澄清-使用查询是不好的,因为语句没有准备好,因此容易受到SQL注入的影响,所以使用准备好的查询可以防止这种情况,因为它们无法直接编辑SQL查询?如果我没有使用函数如何访问查询中的数据,我将发布我所做的(不起作用)以查看您是否知道如何修复它,这是一个更大的函数Login()的一部分啊,我知道了,对不起,您设置了?标记并在执行中告诉它要使用什么数据,这很有意义:)我的程序现在几乎可以运行了,非常感谢您的帮助应该是
return$stmt
;)它应该是
返回$stmt
;)