<?php
session_start();
if(!isset($_SESSION['account'])){
if(isset($_POST['account']))
{
$db=new mysqli('localhost','webuser','111111','users');
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
} $stmt=$db->prepare("SELECT account FROM logins WHERE 
account=? and password=?");
$account = $_POST['account'];
$password = $_POST['password'];
//**************************************************
$res = $stmt->bind_param('ss', $account, $password);
//**************************************************

$stmt->execute();
$stmt->store_result();
if($stmt->num_rows==1)
{
$stmt->bind_result($account);
$stmt->fetch();
$_SESSION['account']=$account;
header("Location:index.htm");
} else {
require_once('login.htm');
echo "<p>Here isn't such user or wrong password!</p>";
}

}else{
require_once('login.htm');
}
}else{
echo "You have already logged into the site";
}

?>

解决方案 »

  1.   

    你是如何知道 bind_param() 执行不了的? 程序进入if 里面了吗?
    在 $stmt->fetch(); 后面echo $account; exit;看看
      

  2.   

    把你的bind_param()贴出来看看...
    有报错信息吗?
    看一下报错日志...
      

  3.   

    已经调试过了,这一句前面的都没有问题,就是执行到这一句时,什么都不返回。即使你把bind_param()写成bind_parammmmm()随意什么错误的格式,它都不报错。
      

  4.   

    已经调试过了,这一句前面的都没有问题,就是执行到这一句时,什么都不返回。即使你把bind_param()写成bind_parammmmm()随意什么错误的格式,它都不报错。 
      

  5.   

    用echo一句一句的试的,试到那一句时,后面的echo就出不来了。
      

  6.   

    你打印一下$smtm,应该是个资源型的,看看里面有没有那个bind_param()