Php 为什么fetch_assoc返回false?
这真的很奇怪,查询必须通过,因为脚本是回显“Get Row”,到目前为止我没有错误。但是当我尝试使用$result->fetch_assoc()时,我得到了一个错误,$result显示为false,这是为什么呢?请原谅这个问题看起来有多愚蠢,我仍在学习如何使用mysqli.:) 你的问题既不愚蠢也不奇怪。您只是被Php 为什么fetch_assoc返回false?,php,mysqli,Php,Mysqli,这真的很奇怪,查询必须通过,因为脚本是回显“Get Row”,到目前为止我没有错误。但是当我尝试使用$result->fetch_assoc()时,我得到了一个错误,$result显示为false,这是为什么呢?请原谅这个问题看起来有多愚蠢,我仍在学习如何使用mysqli.:) 你的问题既不愚蠢也不奇怪。您只是被存储结果()和获取结果()弄糊涂了 这两个函数都从数据库中获取整个记录集。一旦获取了数据,就不能再获取它。因此,不能同时使用这两个函数 我们可以用两种方法修复您的代码 使用存储结果():
存储结果()
和获取结果()
弄糊涂了
这两个函数都从数据库中获取整个记录集。一旦获取了数据,就不能再获取它。因此,不能同时使用这两个函数强>
我们可以用两种方法修复您的代码
使用存储结果()
:
使用获取结果()
:
$stmt=$mysqli->prepare(“从代码=?”的临时用户处选择用户名、电子邮件、密码和代码”);
$stmt->bind_参数('s',$code);
$stmt->execute();
$result=$stmt->get_result();
//如果SELECT语句返回1,则获取数据。
如果($result->num_rows===1){//,$code变量是在发布的代码上面定义的。所以这不是问题所在。您得到了什么错误?您的PHP版本是什么?get_result()
仅适用于MySQLND驱动程序(在以后的PHP版本中)。如果您没有该驱动程序,则必须使用旧的bind_result()
和fetch()
方法与MySQLi一起使用。我认为它与5.3一起提供,但不是默认的,并且是5.4+CMate中的默认MySQL驱动程序,致命错误:对非对象调用成员函数fetch_assoc()
$stmt = $mysqli->prepare("SELECT username, email, password, code FROM temp_users WHERE code = ?");
$stmt->bind_param('s', $code);
$stmt->execute();
$stmt->store_result();
//if SELECT statement returns 1, grab data.
if ($stmt->num_rows === 1) {
echo "Got Row";
$result = $stmt->get_result();
var_dump($result);
while ($row = $result->fetch_assoc()) {
$username = $row['username'];
$email = $row['email'];
$password = $row['password'];
}
$stmt = $mysqli->prepare("SELECT username, email, password, code FROM temp_users WHERE code = ?");
$stmt->bind_param('s', $code);
$stmt->execute();
$stmt->store_result();
//if SELECT statement returns 1, grab data.
if ($stmt->num_rows === 1) {
echo "Got Row";
$stmt->bind_result($username, $email, $password);
while ($stmt->fetch()) {
// use the data here
var_dump($username);
}
}
$stmt = $mysqli->prepare("SELECT username, email, password, code FROM temp_users WHERE code = ?");
$stmt->bind_param('s', $code);
$stmt->execute();
$result = $stmt->get_result();
//if SELECT statement returns 1, grab data.
if ($result->num_rows === 1) { // <--- !!! We are using the result object here
echo "Got Row";
foreach ($result as $row) {
$username = $row['username'];
$email = $row['email'];
$password = $row['password'];
}
}