Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么fetch_assoc返回false?_Php_Mysqli - Fatal编程技术网

Php 为什么fetch_assoc返回false?

Php 为什么fetch_assoc返回false?,php,mysqli,Php,Mysqli,这真的很奇怪,查询必须通过,因为脚本是回显“Get Row”,到目前为止我没有错误。但是当我尝试使用$result->fetch_assoc()时,我得到了一个错误,$result显示为false,这是为什么呢?请原谅这个问题看起来有多愚蠢,我仍在学习如何使用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'];
    }
}