gpt4 book ai didi

php - 使用 SELECT 获取正确的行,在 PDO 中获取零行

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:02 24 4
gpt4 key购买 nike

我有一个严重的问题

我正在使用 PHP 安装 REST API。所以,我有一个名为“Checkestablishment”的 Controller (这将从数据库中检查用户名和密码)。

我有下一个查询

SELECT table_users.ID, table_users.FirstName, table_users.LastName, table_users.ZIP,     table_users.State, table_users.Country, table_users.Email, table_users.Birthday
FROM table_users, table_user_credentials
WHERE table_user_credentials.User = table_users.ID
AND table_user_credentials.Username = 'someuser'
AND table_user_credentials.Pass = 'somepass'

它工作正常,MySQL 为我提供了所需的行。

但是当我试图在 PDO 中执行它时,我得到了 null。

这是我的代码

    public function add()
{
global $counect;
$i = 0;
$Query_CheckCredential = "SELECT table_users.ID, table_users.FirstName, table_users.LastName, table_users.ZIP, table_users.State, table_users.Country, table_users.Email, table_users.Birthday
FROM table_users, table_user_credentials
WHERE table_user_credentials.User = table_users.ID
AND table_user_credentials.Username = ':Est_User'
AND table_user_credentials.Pass = ':Est_Pass'";
$PS_CheckCredential = $counect->prepare($Query_CheckCredential);
$Sucess = $PS_CheckCredential -> execute(array(
':Est_User'=>$this->str_User,
':Est_Pass'=>$this->str_Pass
));
if($Sucess)
{
$PS_CheckCredential -> bindColumn(1, $User_ID);
$PS_CheckCredential -> bindColumn(2, $User_FirstName);
$PS_CheckCredential -> bindColumn(3, $User_LastName);
$PS_CheckCredential -> bindColumn(4, $User_ZIP);
$PS_CheckCredential -> bindColumn(5, $User_State);
$PS_CheckCredential -> bindColumn(6, $User_Country);
$PS_CheckCredential -> bindColumn(7, $User_Email);
$PS_CheckCredential -> bindColumn(8, $User_Birthday);
//$PS_CheckCredential -> setFetchMode(PDO::FETCH_ASSOC);

$Array_Est_Keys = array('ID', 'FirstName', 'LastName', 'ZIP', 'State', 'Country', 'Email', 'Birthday');

$Array_Est_Keys = array_fill_keys($Array_Est_Keys, '');

do
{
$Array_User['ID'] = $row['ID'];
$Array_User['FirstName'] = $User_FirstName;
$Array_User['LastName'] = $User_LastName;
$Array_User['ZIP'] = $User_ZIP;
$Array_User['State'] = $User_State;
$Array_User['Country'] = $User_Country;
$Array_User['Email'] = $User_Email;
$Array_User['Birthday'] = $User_Birthday;
}
while($row = $PS_CheckCredential->fetch(PDO::FETCH_ASSOC));
if(empty($Array_User))
{
return false;
}
else
{
return $Array_User;
}
}
else
{
echo "No luck";
//return false;
}

我尝试通过不同的方式获取查询,但没有人解决我的问题。

PD成功将我标记为 true,因为查询执行成功,但我得到的是空值(我为正在创建的数组创建了一个 print_r() 并且我得到了所有值为空的数组)。

感谢您的宝贵时间。干杯!

最佳答案

删除 ':Est_User'
两边的引号在 AND table_user_credentials.Username = ':Est_User'

':Est_Pass'AND table_user_credentials.Pass = ':Est_Pass'

SELECT 查询中的那些绑定(bind)不应包含引号。

检查错误会发出信号。

如:

$counect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

在数据库连接打开之后。

关于php - 使用 SELECT 获取正确的行,在 PDO 中获取零行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com