繁体   English   中英

mysqli bind_result()/只返回nul

[英]mysqli bind_result()/ only returning nul

我在使用mysqli的bind_result()fetch()函数时遇到了很多麻烦。

我已经尝试了一些方法,包括回显以下结果:

$sql->prepare()
$sql->bind_param()
$sql->execute()
$sql->bind_result()

并且它们都返回true,唯一返回false函数是$sql->fetch()

mysqli的连接信息如下:

<?php
 $mysqli = new mysqli('localhost','false','data','battlestar');  

 if (mysqli_connect_errno()) {
  $siteOffline = 1;
  $smarty->assign("Fail", "Site is offline");
 }
?>

我遇到麻烦的mysqli准备的陈述在这里:

$UID = "";
$userLevel = "";

if(isset($_POST['hidden'])){
$username = $_POST['username'];
$password = crypt($_POST['password']);

if($username != "" || $password != ""){
if($sql = $mysqli->prepare("SELECT UID, userLevel FROM users WHERE username=? AND   password=?")){

$sql->bind_param('ss', $username, $password);
$result = $sql->execute();

$res = $sql->bind_result($UID, $userLevel);

$sql->fetch();

var_dump($sql->error_list);

echo $UID . ' ' . $userLevel;
var_dump($sql);
if($result == NULL){
$smarty->assign("error", "Username or password invalid, please try again");
}
else{
$smarty->assign("confirmation", "Logged in Sucessfully");

$_SESSION['UID'] = $UID;
$_SESSION['username'] = $username;
$_SESSION['loggedIn'] = 1;
$_SESSION['userLevel'] = $userLevel;
}
}
}
else{
$smarty->assign("error", "You must enter a username and password");
}
}

$smarty->assign("content", $smarty->fetch("login.tpl"));
require_once("footer.php");
?>

我正在使用php 5.4和mysql 5.5

所以我的问题是,我在查询和bind_result()选择的字段仅返回NULL,而且我已经遍历了bind_result()的文档,但似乎找不到解决方案。

抱歉,如果这很明显或已经被要求,我的确看过其他5个帖子,但没有一个是完全相关的。

如果需要更多数据,请告诉我您需要什么。

完整阅读完您的问题后,答案很清楚-您的查询未返回任何结果。
这是变量包含空值的唯一原因。

如果$sql->fetch()返回false ,则表示发生了错误。 如果返回null ,则表示“没有更多行”。 通过发出var_dump($sql->error);

另外,如果要从fetch()检索数据,则应:

$sql->bind_result($UID, $userLevel);
while($sql->fetch()) {
  printf ("%d (%s)\n", $UID, $userLevel);
}

参考: php.net上的mysqli_stmt :: fetch

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM