【发布时间】:2019-03-07 10:34:50
【问题描述】:
我正在努力学习 mysqli。
我得到这个错误:
Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::fetch_assoc() in C:\xampp\htdocs\bk2\login.php:14 Stack trace: #0 {main} thrown in C:\xampp\htdocs\bk2\login.php on line 14
这是我的 db-conn.php:
<?php
require('bk-config.php');
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_errno) {
echo "Failed to connect to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error;
}
这是我的 login.php:
<?php
include 'db-conn.php';
$post_username = $_POST['post_username'];
$post_password = $_POST['post_password'];
$sql = "SELECT username, password FROM users WHERE username = ? AND password = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $post_username, $post_password);
$stmt->execute();
$rows = $stmt->num_rows;
if($rows = 1){
while ($row = $stmt->fetch_assoc()) {
echo $row['username'];
}
}
这是我在 index.php 中的表格:
<form class="px-4 py-3" action="login.php" method="post">
<div class="form-group">
<label>Username:</label>
<input type="text" name="post_username" class="form-control" placeholder="Enter username">
<label class="mt-2">Password:</label>
<input type="password" name="post_password" class="form-control" placeholder="Password">
</div>
<button type="submit" class="btn btn-danger float-right">Login</button>
</form>
login.php 中 fetch_assoc() 的问题在哪里?
【问题讨论】:
-
fetch_assoc()是mysqli_result对象mysqli_result::fetch_assoc不是mysql_stmt对象的方法 -
@RiggsFolly 说了什么。也许您想使用fetch?
-
查看mysqli_stmt::get_result 或@JonStirling 的建议
-
警告 纯文本密码 PHP提供
password_hash()和password_verify()请使用它们。这里有一些good ideas about passwords如果你使用的是5.5之前的PHP版本there is a compatibility pack available here