首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysqli查询返回true,但fetch_assoc不起作用

在云计算领域,mysqli是一种用于与MySQL数据库进行交互的PHP扩展。当使用mysqli进行查询时,查询语句执行成功后,mysqli_query函数会返回一个结果对象。如果查询语句执行成功且有结果集返回,可以使用fetch_assoc方法从结果对象中获取一行数据作为关联数组。

然而,当mysqli查询返回true,但fetch_assoc不起作用时,可能有以下几种原因:

  1. 查询结果为空:如果查询语句执行成功,但数据库中没有匹配的数据,fetch_assoc方法将无法获取任何数据。在这种情况下,可以使用mysqli_num_rows函数来检查结果集中的行数,如果为0,则表示没有匹配的数据。
  2. 结果集已经被遍历完毕:在使用fetch_assoc方法获取结果集中的数据时,需要逐行遍历。如果之前已经遍历完所有的行数据,再次调用fetch_assoc方法将返回false。可以使用mysqli_data_seek方法将结果集的指针重新定位到第一行,然后再次调用fetch_assoc方法获取数据。
  3. 结果集未释放或关闭:在使用完结果集后,应该及时释放资源,可以使用mysqli_free_result函数释放结果集。另外,还应该关闭数据库连接,可以使用mysqli_close函数关闭连接。如果没有正确释放或关闭结果集和连接,可能会导致后续的fetch_assoc方法无法正常工作。

综上所述,当mysqli查询返回true,但fetch_assoc不起作用时,可以先检查查询结果是否为空,然后确保结果集的指针正确定位,并且释放或关闭结果集和连接。如果问题仍然存在,可能需要进一步检查代码逻辑或调试。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP-Mysqli_query()连接数据库

返回值 mysql_query()仅对SELECT | SHOW | EXPLAIN | DESCRIBE语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。...对于其它类型的 SQL 语句如insert|update,mysql_query() 在执行成功时只返回 TRUE,出错时返回 FALSE。...非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。很有可能一条查询执行成功了并未影响到或并未返回任何行。...fetch_assoc() : 返回结果集的一行作为关联数组,只能是关联数组的索引形式 Mysqli_connect连接 $server = "localhost"; $username = "da1sy...();//将结果以对象方式传给$rows if($rows){ }else{ } 其他查询 mysqli_query($coon,"INSERT INTO num VALUES ($max,0, $news

2.7K20

PHP操作mysql数据库

) 如果选择成功返回true,否则返回false 4、选择字符集 mysqli_set_charset(连接对象,要选择的字符集) 如果选择成功返回true,否则返回flase 5、发送sql语句 mysqli_query...(连接对象,要发送的sql语句) 成功得到一个结果集对象,失败返回false 6、处理结果 6.1获取条目数 a、mysqli_num_rows(结果集对象) 用来获取查询得到的集录条数 仅对select...类型INSERT UPDATE DELETE 操作使用 返回值 大于0的整数成功 -1失败 6.2获取查询的结果集的内容 1、mysqli_fetch_array(结果集对象) 将查询结果以混合数组的形式返回...,一次返回一条 2、mysqli_feach_row(结果集对象) 将查询结果以索引数组的形式返回,一次返回一条 3、mysqli_fetch_assoc(结果集对象) 将查询结果以关联数组的形式返回,...() 释放结果集占用的内存 fetch_row() mysqli_fetch_row() 以索引数组方式返回一行数据 fetch_assoc() mysqli_fetch_assoc() 以关联数组的方式返回一行数据

4.9K20
  • 【译】现代化的PHP开发--PDO

    在下面的小节中,我们将从使用PDO运行查询的一些常见方法开始。然后我们将演示如何使用PDO执行各种MySQL 数据操作语句。最后,我们将重点介绍几个PDO APIs,它们的用途相同,方式不同。...2.2、方式一,exec: 这是运行查询的最简单形式。我们可以使用它快速运行一个查询,通常我们不希望它返回任何结果。...无论使用PDO::exec运行什么查询,成功时都会返回受影响的行数。失败时还返回false。...这些标志参数包括如下: PDO::FETCH_ASSOC返回按列名索引的关联数组。 PDO::FETCH_NUM:返回数值索引数组。...PDO::FETCH_BOTH (default):返回按结果集中返回的列名和0索引列号索引的数组。(PDO::FETCH_ASSOC和PDO::FETCH_NUM的组合)。 还有很多参数选项。

    1.9K00

    PHP中的MySQLi扩展学习(三)mysqli的基本操作

    记住,它返回的不是受影响的行数,这一点是需要注意的。我们如果需要获取受影响的行数需要使用 MySQLi 的属性 affected_rows 。...如果执行的是 SELECT 语句,那么 query() 返回的就是一个 mysqli_result 对象,它代表从一个数据库查询中获取的结果集。关于这个对象的内容我们将在后面的文章中进行详细的说明。...所以,use_result() 方法最大的好处就是占用内存小,适合大量查询的遍历,缺点则是每次都要去数据库查询,速度慢。...mysqli->affected_rows); if(is_object($result)){ var_dump($result->fetch_assoc()); }...总结 光说不练假把式,虽说多语句执行看似很美好,即使在这简单的测试代码中,也会出现各种问题,大家一定要自己多尝试一下。

    2.9K20

    PHP中的MySQLi扩展学习(三)mysqli的基本操作

    记住,它返回的不是受影响的行数,这一点是需要注意的。我们如果需要获取受影响的行数需要使用 MySQLi 的属性 affected_rows 。...如果执行的是 SELECT 语句,那么 query() 返回的就是一个 mysqli_result 对象,它代表从一个数据库查询中获取的结果集。关于这个对象的内容我们将在后面的文章中进行详细的说明。...如果使用 query() 方法,返回的虽然是 PDOStatement 对象,但是它是无法遍历的。 接下来我们就看看 MySQLi 是如何来执行这个多条语句拼接在一起的 SQL 语句的。...所以,use_result() 方法最大的好处就是占用内存小,适合大量查询的遍历,缺点则是每次都要去数据库查询,速度慢。...总结 光说不练假把式,虽说多语句执行看似很美好,即使在这简单的测试代码中,也会出现各种问题,大家一定要自己多尝试一下。

    2.9K00

    【PHP】当mysql遇上PHP

    ) while($row = $mysqli_result->fetch_assoc()){//调用mysqli_result的方法fetch_assoc()后,返回的是一个数组变量$row...运行结果: 思维导图 上面的例子中,一个关键的方法是mysqli对象的query方法,意为查询.实际上,它除了能运行“查”的SQL语句外,还能运行“写改删”的SQL语句。...> 【注意点】 mysqli_fetch_assoc(面向过程)和fetch_assoc(面向对象)这两个方法返回的是一个关联数组变量$row 在命令行界面里,我们需要做选择数据库的选择,即使用“USE...)的方法: 面向对象:fetch_assoc 面向过程:mysqli_fetch_assoc 两者联系 一般情况下,面向对象接口中的对象将会成为面向过程接口中的第一个参数 例如: 通过mysqli...>execute();// 执行生成查询结果 $stmt->bind_result($name,$number);//将执行结果绑定到$name和,$number中 运行结果同上(注意bind_result

    5.7K90

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作

    同 PDO 一样,这个方法只返回成功失败的信息,也就是一个布尔值。...可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。...MySQLI_STMT 中绑定列的方法名为 bind_result() ,虽说名字不一样,功能其实都是差不多的,查询语句中是几个列名,就要绑定几个列名。...返回结果集 执行 fetch() 方法返回的是一个布尔值,它主要的作用是将结果集绑定到指定的变量中,所以如果你直接打印它的结果是不会有什么有用的信息的,我们必须通过绑定列变量的方式来获得数据。...然后通过该对象的 fetch_assoc() 就获得了键名形式的结果集数组。 关于 MySQLI_result 对象的内容,我们将在下篇文章中再进行详细的学习了解。

    2.5K00

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作

    同 PDO 一样,这个方法只返回成功失败的信息,也就是一个布尔值。...可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。...MySQLI_STMT 中绑定列的方法名为 bind_result() ,虽说名字不一样,功能其实都是差不多的,查询语句中是几个列名,就要绑定几个列名。...返回结果集 执行 fetch() 方法返回的是一个布尔值,它主要的作用是将结果集绑定到指定的变量中,所以如果你直接打印它的结果是不会有什么有用的信息的,我们必须通过绑定列变量的方式来获得数据。...然后通过该对象的 fetch_assoc() 就获得了键名形式的结果集数组。 关于 MySQLI_result 对象的内容,我们将在下篇文章中再进行详细的学习了解。

    2.1K10

    PHP 应用PDO技术操作数据库

    > 通过对象返回结果集: 该方法与前面三个不同,他将以一个对象的形式返回一条结果记录,而不是数组,它的每个字段都需要以对象的方式进行访问,数据列的名称区分字母大小写. store_result(); // 取回所有的查询结果 echo "记录个数: {$res->num_rows} 行 "; // 绑定返回结果到指定变量上...> 如果在SELECT查询语句上也使用占位符去查询,并需要多次执行这一条语句时,也可以将mysqli_stmt对象中的bind_param()和bind_result()方法结合起来. query("set names utf8;")) printf("切换字符集失败 "); $success = TRUE; $age = 30; $mysqli...> PDO 获取表中数据: 当执行查询语句时我们可以使用PDO中的Query()方法,该方法执行后返回受影响的行总数,也可以使用Fetch等语句,下面是三者的查询方式. <?

    3.4K10
    领券