`
conkeyn
  • 浏览: 1529042 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

mysql_query()防止掉链的数据库查询

    博客分类:
  • PHP
阅读更多
// -------------------------------------------------------------------
// 函数名称:自定义 mysql_query (加入防掉链功能)
// 调用方式:mysql_query_plus($sql_str, $conn_resource, $dbname_str)
// 变量说明:$sql_str        - 需要执行的查询语句 [string]
//           $conn_resource  - 数据库连接资源 [resource]
//           $host=LOCAL_DB_HOST 数据库主机地址,默认为本机配置
//           $user=LOCAL_DB_USER 数据库用户名,默认为本机配置
//           $pwd=LOCAL_DB_PWD 数据库密码,默认为本机配置
//           $dbname_str     - 连接的库名(默认使用已配置的) [string]
// 返回值类型:resource 或 Boolean
// -------------------------------------------------------------------
function mysql_query_plus($sql_str, & $conn_resource, $host=LOCAL_DB_HOST, 
            $user=LOCAL_DB_USER, $pwd=LOCAL_DB_PWD, $dbname_str = LOCAL_DB_NAME)
{
    // 第一次执行查询
    $query_result = mysql_query($sql_str, $conn_resource);

    // 判断执行查询是否正确
    if ($query_result === false)

        // 如果运行出错,则获取mysql的错误号
        $mysql_error_num = mysql_errno($conn_resource);
    else

        // 运行正常,则返回sql执行结果
        return $query_result;

    // 计数器(用来限制循环次数)
    $link_error_times = 0;

    // 如果执行查询出错,则需要进一步处理
    while ($mysql_error_num != 0 && $link_error_times < 10)
    {
        // 计数器 +1
        $link_error_times++;
        echo "link_error_times:$link_error_times \n";

        // 判断连接是否已丢失
        // 主要用来以防“MySQL server has gone away”
        // if ((! mysql_ping($conn_resource))
        //      || in_array(mysql_errno($conn_resource), array(2006, 2013)))
        // 使用新方法:客户端错误号一般大于 2000
        if ((! mysql_ping($conn_resource)) || mysql_errno($conn_resource) > 2000)
        {
            // 重新连接
            @mysql_close($conn_resource);
            $conn_resource = mysql_pconnect($host,
                                            $user,
                                            $pwd);

            // 本地数据库使用UTF8字符集
            mysql_query("SET NAMES 'utf8'", $conn_resource);
            mysql_select_db($dbname_str, $conn_resource);
        }

        // 重新执行查询
        @$query_result = mysql_query($sql_str, $conn_resource);

        // 判断是否查询是否成功
        if (! ($query_result === false))

            // 运行正常,则返回sql执行结果
            return $query_result;
    }

    // 多次尝试未果,返回 false
    return false;
}    // end mysql_query_plus
分享到:
评论

相关推荐

    dbtest_mysql.rar_MYSQL_c 封装 mysql_mysql封装库_数据库事务

    这个API提供了多种函数,如`mysql_init()`用于初始化连接对象,`mysql_real_connect()`用于建立到MySQL服务器的连接,`mysql_query()`用于执行SQL查询,以及`mysql_fetch_row()`用于获取查询结果等。封装库就是将...

    mysql.rar_MYSQL_数据库 mysql_链接mysql

    在数据库领域,MySQL提供了SQL接口,用于创建、查询、更新和管理存储在数据库中的数据。它支持多种存储引擎,如InnoDB(用于事务处理)、MyISAM(非事务处理,速度快)以及Memory(所有数据存储在内存中)。这些引擎...

    java数据库例子(可以进行查询).rar_database query _java 数据库_java数据库查询_数据 查询_数

    Java数据库查询是编程领域中的重要知识点,特别是在开发需要与数据存储进行交互的应用程序时。本教程将通过一个具体的Java数据库查询示例,帮助你理解如何在Java中执行数据库查询,以及掌握相关的技巧。 首先,Java...

    mysql_test_c__by_wy.rar_MYSQL_mysql api_mysql c++

    查询数据则通过`mysql_query()`执行`SELECT`语句,然后使用`mysql_store_result()`获取结果集,`mysql_fetch_row()`遍历每一行数据: ```c++ MYSQL_RES* result; MYSQL_ROW row; const char* select_data_sql = ...

    Mysql.rar_php class_php mysql_php 类_php数据库_php连接数据库

    3. **执行查询**:类可能包含一个`query()`方法,用于执行SQL查询。它可以处理SELECT、INSERT、UPDATE、DELETE等不同类型的查询,并返回结果集或受影响的行数。 4. **处理结果集**:如果查询涉及到结果集,类可能还...

    浅谈mysql_query()函数的返回值问题

    首先,`mysql_query()` 的主要功能是接收一个SQL查询字符串作为参数,然后尝试在连接的MySQL数据库上执行该查询。如果查询成功,函数将返回一个结果集资源,用于后续的数据处理,如获取查询结果行。这个资源可以被`...

    sqlselect.rar_java mysql_java mysql查询_查询数据库

    本文将深入探讨Java连接MySQL数据库并执行SQL查询的相关知识点。 首先,我们要了解的是Java中的JDBC(Java Database Connectivity),这是一个Java API,用于与各种数据库进行交互。使用JDBC,我们可以连接到MySQL...

    linux_mysql.rar_c mysql linux_linux mysql_linux mysql_linux m

    同时,安全也是不可忽视的部分,包括使用参数化查询防止SQL注入,限制用户权限,定期备份数据库等。 总之,Linux下的数据库编程涉及了对MySQL服务器的管理和C语言接口的运用,这对于任何需要在Linux环境中处理数据...

    mysql-connect.zip_C MYSQL_c mysql_c++ mysql_connect

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,用于存储和管理数据。在C编程语言中与MySQL进行交互,可以让我们创建高效且灵活的数据处理应用程序。本文将深入探讨如何在C语言中实现MySQL连接,以及相关的C++...

    MySQL_API.rar_MYSQL_mysql api

    MySQL_API是用于与MySQL数据库进行交互的一系列函数和接口,主要供开发者在编程时使用,以便执行SQL查询、管理数据库连接、操作数据等任务。在MySQL的C API中,这些函数提供了与数据库进行低级别通信的能力,使得...

    VS C_API方式连接Mysql数据库需要的文件

    在使用Visual Studio (VS) 进行C_API方式连接MySQL数据库时,你需要了解一些关键的知识点,以便正确地配置和实现这个过程。首先,我们来看看标题和描述中提到的"VS C_API方式连接Mysql数据库需要的文件",这通常指的...

    php.zip_PHP 数据库_php操作 mysql_数据库操作

    MySQL则是一款流行的关系型数据库管理系统(RDBMS),它以其高效、稳定和易用性而闻名。当我们谈论“PHP操作MySQL数据库”时,这意味着我们要使用PHP来与MySQL进行交互,实现数据的存储、检索、更新和删除等操作。 ...

    使用C和C++连接MySQL数据库并进行常用的数据库操作。

    - **查询**:使用`mysql_query()`发送SQL查询到数据库。查询结果通过`mysql_store_result()`或`mysql_use_result()`获取。结果集可以通过`MYSQL_RES`指针遍历,用`mysql_fetch_row()`或`mysql_fetch_assoc()`获取每...

    使用C和C++连接MySQL数据库并进行常用的数据库操作

    在本文中,我们将深入探讨如何使用C和C++编程语言连接到MySQL数据库并执行常见的数据库操作。这在软件开发中非常常见,特别是在构建基于桌面或服务器的应用程序时,需要与数据库进行交互,如学生信息管理系统。 ...

    MySQL_API中文手册

    MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),其API(应用程序接口)允许程序员通过编写代码来执行SQL查询,管理数据库,以及实现其他数据库操作。 1. **MySQL API基础**: - MySQL API主要包括C API...

    通过MySQL提供的C API访问MySQL数据库

    MySQL的C API是MySQL数据库系统提供的一种编程接口,允许开发者使用C语言编写应用程序来与MySQL服务器进行交互。本文将深入探讨如何利用C API实现数据库的连接、查询、更新和其他操作,以及如何在Visual C++(VC)...

    mysql5.1_bable.rar_数据库原理

    在这个文件中,你可以找到有关安装 MySQL、配置服务器、创建数据库、管理表、执行 SQL 查询等主题的详细步骤和解释。 数据库的创建和管理是数据库原理的基础。在 MySQL 中,你可以使用 `CREATE DATABASE` 语句创建...

    MySQL_teach_cn.rar_MYSQL_PHP 教程_TEACH_mysql 教程_mysql教程

    MySQL是一个开源、免费的数据库系统,它使用SQL(结构化查询语言)进行数据操作。SQL是用于管理关系数据库的标准语言,包括数据查询、数据更新、数据插入和数据删除等操作。MySQL因其高效、可靠和易用性而备受青睐。...

    SQL.rar_ACCESS数据库_C 数据库_CSharp 数据库_access

    1. **SQL**: SQL(Structured Query Language)是用于管理关系数据库的标准语言。它允许用户创建、查询、更新和管理数据库。在Access中,SQL用于执行各种任务,如创建表、查询、视图和存储过程。标题中的"SQL.rar...

    SQL.rar_Qt数据库_qt sql_qt 数据库_qt 数据库操作_qt和数据库

    Qt SQL提供了与SQL数据库系统的接口,支持多种数据库系统,如SQLite、MySQL、PostgreSQL等。通过QSqlDatabase类,开发者可以方便地创建、打开、关闭以及管理数据库连接。 1. **连接数据库**: 使用QSqlDatabase类的...

Global site tag (gtag.js) - Google Analytics