1

据我了解,普通的 mysqlmysql.*方法库已被该库所取代mysqli.*。从本质上讲,我的理解是新库使用了所有旧方法,只是在方法名称的末尾加上了字母“i”。三个问题:

  1. 为什么 MySQL 更新了这个库,它包含了哪些新特性?
  2. 对于 Notepad++ 的用户,可以从下拉菜单中选择语言,然后像 IDE 一样突出显示代码,例如方法为蓝色并以粗体显示。当我第一次写一些 MySQL 代码时,我使用了旧的库方法,没有意识到进步。当我将其转换为新的库方法时,蓝色/粗体突出显示消失并恢复为正常字体。当我删除方法名称中的“i”时,它再次突出显示。为什么 Notepad++ 不能识别新方法?
  3. 新方法是必需的吗(即旧方法在 PHP 中是否仍然有效)?
4

5 回答 5

13

使用记事本++,突出显示mysqli,然后

  1. 打开记事本选择设置
  2. 选择样式配置器
  3. 在语言中选择 php
  4. 在样式中选择 WORD
  5. 在用户定义的关键字中输入要突出显示的关键字。
    确保在假(第一项)之后有一个空格。
    下面是一个列表(这是我使用的。)
  6. 保存并关闭。

True false
mysqli_affected_rows
mysqli_autocommit
mysqli_change_user
mysqli_character_set_name
mysqli_close
mysqli_commit
mysqli_connect_errno
mysqli_connect_error
mysqli_connect
mysqli_data_seek
mysqli_debug
mysqli_dump_debug_info
mysqli_errno
mysqli_error_list
mysqli_error
mysqli_fetch_all
mysqli_fetch_array
mysqli_fetch_assoc
mysqli_fetch_field_direct
mysqli_fetch_field
mysqli_fetch_fields
mysqli_fetch_lengths
mysqli_fetch_object
mysqli_fetch_row
mysqli_field_count
mysqli_field_seek
mysqli_field_tell
mysqli_free_result
mysqli_get_charset
mysqli_get_client_info
mysqli_get_client_stats
mysqli_get_client_version
mysqli_get_connection_stats
mysqli_get_host_info
mysqli_get_proto_info
mysqli_get_server_info
mysqli_get_server_version
mysqli_info
mysqli_init
mysqli_insert_id
mysql_kill
mysqli_more_results
mysqli_multi_query
mysqli_next_result
mysqli_num_fields
mysqli_num_rows
mysqli_options
mysqli_ping
mysqli_prepare
mysqli_query
mysqli_real_connect
mysqli_real_escape_string
mysqli_real_query
mysqli_reap_async_query
mysqli_refresh
mysqli_rollback
mysqli_select_db
mysqli_set_charset
mysqli_set_local_infile_default
mysqli_set_local_infile_handler
mysqli_sqlstate
mysqli_ssl_set
mysqli_stat
mysqli_stmt_init
mysqli_store_result
mysqli_thread_id
mysqli_thread_
安全
mysqli_use

于 2013-09-30T18:34:55.857 回答
1

我不能为你回答第一个问题,因为我不知道细节。

2:不知道为什么默认不包含,但是可以手动添加。
转到设置-> 样式配置器,然后在语言下选择 php。在样式下选择 WORD。
在名为“用户定义的关键字”的框中添加您使用的所有 mysqli_* 函数。从现在开始,它们将被突出显示。

3:目前,它们会起作用。它在 5.5 中已被弃用,这意味着当您使用它时它会发出警告。最终,它将被完全删除。不过,切换到 mysqli 以便升级时不会中断。

于 2013-03-19T18:54:02.310 回答
0

来自 PHP.net 关于数据库的常见问题解答

为什么不鼓励使用我使用了 10 多年的 MySQL 扩展 (ext/mysql)?是否已弃用?我改用什么?我该如何迁移?

如选择 MySQL API部分所述,共有三个 MySQL 扩展。旧的 API 不应该被使用,总有一天它会被弃用并最终从 PHP 中删除。这是一个流行的扩展,因此这将是一个缓慢的过程,但强烈建议您使用mysqliPDO_MySQL编写所有新代码。

迁移脚本目前不可用,尽管 mysqli API 包含过程和 OOP API,过程版本类似于 ext/mysql。

不能混合扩展。因此,例如,将 mysqli连接传递给PDO_MySQLorext/mysql将不起作用。


至于您关于 Notepad++ 功能的问题,您必须在他们的官方论坛/社区上提问。


您的第三个问题的答复隐藏在上面的摘录中:

旧的 API不应该被使用,总有一天它会被弃用最终从 PHP 中删除。这是一个流行的扩展,所以这将是一个缓慢的过程,但强烈建议您使用or编写所有新代码mysqliPDO_MySQL

于 2013-03-19T18:51:30.787 回答
0

从本质上讲,我的理解是新库使用所有旧方法,只是在方法名称的末尾标记了字母“i”。

不必要。mysqli函数现在有两种形式,一种是过程式的(如旧mysql的),一种是面向对象的。(例如$result->fetch_array())。

来自php.net

mysqli 扩展具有双重接口。它支持过程和面向对象的编程范式。

一些新mysqli函数还接受与旧函数不同的参数。最普遍的是,大多数函数现在都需要一个mysqli链接(mysqli连接)作为它们的参数。

至于为什么要改,显然有几个原因。最重要的是安全性和稳定性,引入新的 OO 样式一定是原因之一。

看看这个的好处:MySQLi 扩展的好处

于 2013-03-19T18:51:43.610 回答
0

1)根据php.net的概述

  • 面向对象的接口
  • 支持准备好的报表
  • 支持多个语句
  • 交易支持
  • 增强的调试功能
  • 嵌入式服务器支持

2)我从来没有用过Notepad++,我用的是Sublime Text 2。文本编辑器可能不适合每种语言,所以也许有一个用于mysqli的Notepad++插件?

3) MySql 概述说:

此扩展自 PHP 5.5.0 起已弃用,不推荐用于编写新代码,因为它将在未来被删除。

进行切换可能是一个好主意,它肯定不会受到伤害,并且及时了解 PHP 与 MySql 交互的方式肯定会很好。


编辑:对我来说,编写 MySqli 比 MySql 更流畅,因为在使用 MySqli 类时我不必在查询末尾包含连接。

$query = $mysqli->query("SELECT * FROM table");

代替

$query = mysql_query("SELECT * FROM table",$link);
于 2013-03-19T18:55:59.023 回答