我使用PHP和MySQL相对较新,并且遇到以下代码的问题。
$stmt = $this->conn->prepare("SELECT * FROM users WHERE user_name = ?");
$stmt->bind_param("s", $username);
if ($stmt->execute()) {
$user = $stmt->get_result()->fetch_assoc();
$stmt->close();
return $user;
}
错误:
调用未定义的方法mysqli_stmt :: get_result()是在运行此脚本时产生的,可能是由于MAMP不支持mysqlnd
。我试图找出如何将本机驱动程序安装到MAMP但看起来不可能 - (我已提交错误报告,并建议其他MAMP用户也这样做。)
下面这一行似乎是个问题:
$user = $stmt->get_result()->fetch_assoc();
任何人都可以提出另一种产生相同结果但没有mysqlnd
的方法吗?
非常感谢。
答案 0 :(得分:3)
检查你的phpinfo()。我有mysqlnd,但只有PDO的表现。您可以通过查看mysqlnd部分下的API Extensions来判断(如果安装了mysqlnd)。
而不是在PDO中重写所有内容,这对我有用:
$stmt = $this->conn->prepare("SELECT name, email, api_key, status, created_at FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
if ($stmt->execute()) {
$stmt->bind_result($name, $email, $api_key, $status, $created_at);
/* fetch values */
mysqli_stmt_fetch($stmt);
/* set values */
$user['name'] = $name;
$user['email'] = $email;
$user['api_key'] = $api_key;
$user['created_at'] = $created_at;
$stmt->close();
return $user;
} else {
return NULL;
}