我一直在用 PHP 将很多旧的 MySQL 东西转换为 MySQLi,并且在以下代码中遇到问题:
### FETCH INCLUDES ###
$player=$_POST['player'];
$password=md5($_POST['password']);
#### DB CONNECTION ####
if(!$mysqli=new mysqli(DBHOST,DBUSER,DBPWD,DBNAME)) {$err=$mysqli->error; print($err); }
$sql="SELECT * FROM accounts WHERE name='?' AND passkey='?'";
if($stmt=$mysqli->prepare($sql)) {
//$stmt->bind_param('ss',$player,$password);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows==1) {
$account=$stmt->fetch_assoc();
// purely for debugging
print_r($account);
if($_SESSION['account']=$account) $account=true;
} else {
echo "Failed. Row count: ";
print($stmt->num_rows);
echo "<br />";
$query=str_replace('?','%s',$sql);
printf($query,$player,$password);
$account=false;
}
$stmt->close();
} else {
$err=$mysqli->error;
print($err);
}
我已将故障范围缩小到查询本身。我得到 0 行返回,没有错误,所以我想我会输出查询(我要去那里的 str_replace 东西),我可以使用查询从数据库中返回一行,使用来自 PHPMyAdmin 的相同查询
我哪里错了?
编辑
我尝试将查询更改为没有绑定参数的基本查询 - “SELECT * FROM table”仍然没有返回任何行。所以这不是查询本身,而是我准备、执行情况的顺序/格式
第二次编辑:我已将 $stmt->store_result() 添加到代码中,但仍返回 0 行数。
第三次编辑:我调查了看起来不错的连接和用户设置。我可以通过控制台使用相同的用户和密码连接到数据库,并且数据库名称相同。我真的很难过:(