【问题标题】:MySQL new library and notepad++MySQL 新库和记事本++
【发布时间】:2013-03-08 15:04:05
【问题描述】:

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

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

【问题讨论】:

标签: php mysql mysqli notepad++


【解决方案1】:

使用记事本++,高亮mysqli,然后

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

真假
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_刷新
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_safe
mysqli_use_result
mysqli_warning_count

【讨论】:

    【解决方案2】:

    我无法为您回答第 1 个问题,因为我不知道详细信息。

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

    3:目前,它们会起作用。它在 5.5 中已被弃用,这意味着它会在您使用它时引发警告。最终,它将被完全删除。不过,请切换到 mysqli,这样升级时不会出现任何问题。

    【讨论】:

      【解决方案3】:

      来自 PHP.net 关于databases 的常见问题解答

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

      Choosing a MySQL API 部分所述,共有三个 MySQL 扩展。旧的 API 不应该使用,总有一天 将被弃用并最终从 PHP 中删除。这是一个受欢迎的 扩展,所以这将是一个缓慢的过程,但你强烈 鼓励使用mysqliPDO_MySQL

      迁移脚本目前不可用,虽然 mysqli API 包含程序和 OOP API,其中程序 版本类似于 ext/mysql。

      不能混合扩展。因此,例如,通过 mysqliPDO_MySQLext/mysql 的连接将不起作用。


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


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

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

      【讨论】:

        【解决方案4】:

        1) 根据php.net's overview

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

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

        3) The MySql overview 说:

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

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


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

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

        代替

        $query = mysql_query("SELECT * FROM table",$link);
        

        【讨论】:

          【解决方案5】:

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

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

          来自php.net

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

          一些新的mysqli 函数也接受与旧函数不同的参数。大多数情况下,大多数函数现在都需要一个mysqli 链接(mysqli 连接)作为它们的参数。

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

          看看这个有什么好处:MySQLi extension benefits

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多