MySQL新库和记事本++

时间:2013-03-19 18:45:40

标签: mysql mysqli notepad++

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

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

5 个答案:

答案 0 :(得分:12)

使用Notepad ++,突出显示mysqli,然后

  1. 打开记事本选择设置
  2. 选择样式配置器
  3. 在语言中选择php
  4. in style select WORD
  5. 在用户定义的关键词中输入您想要突出显示的关键字 确保假装后有空格(第一项。)
    下面是一个列表(它是我使用的列表。)
  6. 保存并关闭。
  7. 真假 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_safe
    mysqli_use_result
    mysqli_warning_count

答案 1 :(得分:1)

我不能为你回答1号因为我不知道细节。

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

3:现在,他们会工作。它在5.5中已弃用,这意味着它会在您使用它时发出警告。最终,它将被完全删除。仍然,切换到mysqli,以便在升级时没有任何中断。

答案 2 :(得分:0)

来自PHP.net关于databases

的常见问题解答
  

为什么我使用超过10年的MySQL扩展(ext / mysql)不鼓励使用?它被弃用了吗?我该怎么用   代替?我该如何迁移?

     

有三个MySQL扩展,如Choosing a MySQL API部分所述。不应该使用旧的API,有一天它   将被弃用并最终从PHP中删除。这是一个受欢迎的   扩展所以这将是一个缓慢的过程,但你是强烈的   鼓励用mysqli或者{。}编写所有新代码   PDO_MySQL

     

目前还没有迁移脚本,尽管mysqli   API包含过程和OOP API以及过程   版本类似于ext / mysql。

     

无法混合扩展名。所以,例如,传递一个   与mysqliPDO_MySQL的{​​{1}}连接无效。


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


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

旧的API 不应该,有一天它将被弃用并且最终从PHP中移除。这是一个受欢迎的扩展,因此这将是一个缓慢的过程,但您强烈鼓励 所有新代码使用mysqliPDO_MySQL

答案 3 :(得分:0)

  

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

不一定。 mysqli函数现在有两种形式,可以是程序性的(如旧的mysql)或面向对象的样式。 (例如$result->fetch_array())。

来自php.net

  

mysqli扩展程序具有双重界面。它支持程序和面向对象的编程范例。

一些新的mysqli函数也接受旧版本的不同参数。最常见的是,大多数功能现在需要mysqli链接(mysqli连接)作为参数。

至于为何他们改变了它,显然必须有几个原因。最重要的是安全性和稳定性,并引入新的OO风格必须是一个原因。

看一下这些好处:MySQLi extension benefits

答案 4 :(得分:0)

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);