La conexión de varias bases de datos no funciona con new_link=TRUE y sql.safe_mode = OFF

Estoy tratando de conectar una base de datos diferente desde una función php (suponiendo que haya una conexión actual a otra base de datos). Estoy usando mysql_connect() con new_link parámetro establecido en TRUE como se puede ver a continuación. ¿Cómo es posible que devuelva el siguiente código? global_thread_id=16357138 local_thread_id=16357139 current_global=16357139 (lo que significa que la conexión local anuló la conexión anterior) a pesar del VERDADERO en mysql_connect()

También en la configuración de php, sql.safe_mode = DESACTIVADO

// Class static method
static function Query($sql) {
       $global_thread_id = mysql_thread_id();
       if ($link = mysql_connect(FB_DB_HOST, FB_DB_USER, FB_DB_PASS, true)) 
       {
            $local_thread_id = mysql_thread_id($link);                          
            echo 'global_thread_id='.$global_thread_id.' local_thread_id='.$local_thread_id.' current_global='.mysql_thread_id();   
       }
}

preguntado el 24 de agosto de 12 a las 05:08

1 Respuestas

mysql_thread_id() obtiene la última identificación del hilo, no un "global"

php manual para mysql_thread_id dice:

Recupera el ID del hilo actual

// Class static method
static function Query($sql) {

       /* fetch latest thread id = global */
       $global_thread_id = mysql_thread_id();
       if ($link = mysql_connect(FB_DB_HOST, FB_DB_USER, FB_DB_PASS, true)) 
       {
            /* fetch thread id from $link */
            $local_thread_id = mysql_thread_id($link);

            /* echo 2 vars and the latest thread id = same as link */
            echo 'global_thread_id='.$global_thread_id.' local_thread_id='.$local_thread_id.' current_global='.mysql_thread_id();   
       }
}

Respondido 24 ago 12, 06:08

sí, lo sé. Lo que quiero decir con "global" es que mi secuencia de comandos tiene una conexión principal que se usa en todas partes de la página, por lo tanto, mysql_thread_id() sin $ enlace para obtener este ID de hilo principal (por lo tanto, lo llamo conexión global) y para esta segunda conexión estoy usando el recurso $link para obtener lo que yo llamo id de subproceso "local"... - Steve

ahora mi problema es que el ID del hilo devuelto por mysql_thread_id() es igual a $local_thread_id después de la llamada a mysql_connect() a pesar del parámetro 'new_link' establecido en TRUE - Steve

si tiene más de una conexión a la base de datos, siempre use la variable $link cuando hable con mysql, mi enfoque habitual es tener una clase de base de datos, donde configuro $link como una variable de clase. pero si va a arreglar todas sus llamadas mysql, es posible que desee pasar de las antiguas funciones obsoletas a PDO: Puggan se

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.