Php 获取准备好的mysqli语句的结果

Php 获取准备好的mysqli语句的结果,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我正在godaddy服务器上运行PHP5.4。我正在测试一个非常简单的查询,但无法使用任何方法返回结果 我使用这样一个事先准备好的声明: $login = mysqli_prepare($sqlConn,"SELECT 1 FROM users WHERE username = ? AND password = ?"); mysqli_stmt_bind_param($login, "ss", $username, $password); if(!empty($login)){ my

我正在godaddy服务器上运行PHP5.4。我正在测试一个非常简单的查询,但无法使用任何方法返回结果

我使用这样一个事先准备好的声明:

$login = mysqli_prepare($sqlConn,"SELECT 1 FROM users WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($login, "ss", $username, $password);

if(!empty($login)){
     mysqli_stmt_execute($login);

     //I tried this but an error message says mysqli_stmt_get_result is undefined
     //$validated = mysqli_stmt_get_result($login);

     mysqli_stmt_bind_result($login, $validated);
     mysqli_stmt_fetch($login);

     //$validated is always empty
     print_r($validated);

     if(empty($validated)) echo 'no user found';
     else echo 'found user';
}
$validated = mysqli_query($sqlConn, "SELECT 1 FROM users WHERE username = ME");
代码总是打印出“未找到用户”,即使我使用的用户名肯定在我的数据库中,并且打印始终为空。如果我直接在数据库中运行sql代码,它将返回正确的结果

为什么我不能使用mysqli\u stmt\u获取结果?为什么绑定/获取代码不起作用

如果我使用这样的未准备好的陈述:

$login = mysqli_prepare($sqlConn,"SELECT 1 FROM users WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($login, "ss", $username, $password);

if(!empty($login)){
     mysqli_stmt_execute($login);

     //I tried this but an error message says mysqli_stmt_get_result is undefined
     //$validated = mysqli_stmt_get_result($login);

     mysqli_stmt_bind_result($login, $validated);
     mysqli_stmt_fetch($login);

     //$validated is always empty
     print_r($validated);

     if(empty($validated)) echo 'no user found';
     else echo 'found user';
}
$validated = mysqli_query($sqlConn, "SELECT 1 FROM users WHERE username = ME");
它可以正常工作,并返回正确的结果

mysqli_stmt_bind_param($login, "ss", $username);
应该是

mysqli_stmt_bind_param($login, "s", $username);

您有一个参数,但您说第一个是字符串,第二个也是:
mysqli_stmt_bind_param($login,“ss”,$username)
@RocketHazmat刚刚测试过,并用
选择1,其中
返回正确的行数。如果用户名丢失,则不会返回任何行,而如果用户名存在,则会返回一行(但您可以确定,它只有一列
1
mysqli\u stmt\u get\u result
仅在安装了MySQLnd驱动程序()时才存在。@RocketHazmat感谢您回答了唯一的实质性问题。。我意识到我忘了给密码加密。。我投票删除这个question@Cbas:很高兴你弄明白了。P.P.S.我建议使用类似(这里是PHP<5.5版本:)的密码。您不应该存储或甚至无法获取原始明文密码。抱歉,这是一个输入错误。我实际上有两个参数,也许这会改变情况?我编辑了示例代码。