哪些mysql函数执行客户机和服务器之间的往返


which mysqli functions do a client server round trip

我想了解一个典型的mysqli查询有多少客户端服务器调用?

Step(1) $result = mysqli_query($link, $query);

根据查询的类型,我们在此之后使用其他mysqli函数,如

mysqli_fetch_fields, mysqli_affected_rows, mysqli_insert_id, mysqli_fetch_row

等。然后关闭结果对象。

现在,是所有的数据检索和存储在php内存后的步骤(1)?或者mysqli_fetch_fields, mysqli_insert_id等使另一个调用mysql服务器?

问的原因:试图理解mysql调用是如何工作的。

PHP MySQLi API是基于MySQL C API构建的。所以如果你对它有所了解就更好了。

基本上,SELECT查询可以产生大的ResultSet和这个ResultSet从服务器端传输到客户端,当你调用PHP的mysqli_store_result()(在C API, mysql_store_result())。

  • C API mysql_fetch_row()只是返回一个指向MYSQL_RES*的指针(它已经在PHP中存储在mysql_store_result()之后)。但是'mysqli_fetch_row() '将需要一些内存来制作PHP的数组。

  • mysqli_insert_id()(这是C API的last_insert_id())只是返回MYSQL连接数据结构的插入id,这意味着没有额外的内存用于插入id。

如果你想知道MySQLi是如何工作的,我建议你学习MySQL C API并查看PHP源代码。

mysqli_query在服务器上运行查询并返回false表示查询失败,true表示查询成功但未返回任何内容(例如UPDATE查询),否则返回mysqli_result。mysqli_result是一个扩展可遍历接口的类,所以是的,它在内存中。所有其他函数mysqli_fetch_fields, mysqli_affected_rows等只是类中的方法,所以它们只是读取已经在内存中的内容。

php文档

这个文档告诉你关于mysqli你需要知道的一切。

mysqli_query执行查询并返回一个查询对象,该对象有一些方法,其中有:

  • mysqli_fetch_fields:

    返回一个对象数组,该数组表示结果集中的字段

  • mysqli_affected_rows:

    返回受影响的行数最后插入、更新、替换或删除查询。

  • mysqli_insert_id:

    返回上次查询中使用的自动生成的id

  • mysqli_fetch_row:

    获取结果行作为枚举数组

作为对象的所有方法,它们不执行sql请求,它们只是访问对象的值并根据方法返回不同的结果。