Foros del Web » Programando para Internet » PHP »

transacciones en MySQL 4.1.21-standard

Estas en el tema de transacciones en MySQL 4.1.21-standard en el foro de PHP en Foros del Web. Hola, en el servidor con el que estoy trabajando tiene la version de MySQL 4.1.21-standard , dentro de poco voy a cambiar a la version ...
  #1 (permalink)  
Antiguo 10/02/2007, 14:36
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 10 meses
Puntos: 2
transacciones en MySQL 4.1.21-standard

Hola, en el servidor con el que estoy trabajando tiene la version de MySQL 4.1.21-standard , dentro de poco voy a cambiar a la version de MySQL 5.0 ,pero por el momento tengo que hacer una transaccion no me funciona es esta:

Código PHP:
$query="
SET AUTOCOMMIT=0;
BEGIN TRANSACTION;
insert into vca_nope(nope_fech,clie_codi,vend_codi,nope_total,nope_igv,nope_dire,nope_dirent,nope_tipo) values('$fecha','$id','$idven',$ttotalp,$tigv,'$dire','$dirent','$tipo');

commit;

"
;

$rs=mysql_query($query,$cn); 
pero no funciona, no se que pasa, pueden ayudarme?
  #2 (permalink)  
Antiguo 10/02/2007, 20:27
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 19 años
Puntos: 5
Re: transacciones en MySQL 4.1.21-standard

Si quieres manejar transacciones en mysql y con php tienes que instalar la extension de mysql (mysqli), aqui te dejo un enlace para que leas mas al respecto, saludos, cya
http://www.php.net/manual/es/ref.mysqli.php
__________________
"El Conocimiento es de todos, no solo de algunos"
  #3 (permalink)  
Antiguo 11/02/2007, 15:16
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 10 meses
Puntos: 2
Re: transacciones en MySQL 4.1.21-standard

pero como puedo instalarlo si el servidor al que accedo es de pago y no es mio.
  #4 (permalink)  
Antiguo 11/02/2007, 20:33
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 19 años
Puntos: 5
Re: transacciones en MySQL 4.1.21-standard

Si es un servidor de pago, tienes que hablar con el responsable tecnico y ver si es factible que te instalen la extensión de mysql que necesitas, ...
segun estuve leyendo la documentacion de mysql el api de PHP para mysql permite que ejecutes sentencias como BEGIN o START TRANSACTION, con el clasico mysql_query():
Código:
MySQL transactions

MySQL supports transactions on tables that are of type InnoDB. I have noticed a behaviour which is puzzling me when using transactions.

If I establish two connections within the same PHP page, start a transaction in the first connection and execute an INSERT query in the second one, and rollback the transaction in the first connection, the INSERT query in the second connection is also rolled-back.

I am assuming that a MySQL transaction is not bound by the connection within which it is set up, but rather by the PHP process that sets it up.

This is a very useful "mis-feature" (bug?) because it allows you to create something like this:

class Transaction {
  var $dbh;

  function Transaction($host, $username, $password) {
   $this->dbh = mysql_connect($host, $username, $password);
  }

  function _Transaction() {
     mysql_disconnect($this->dbh);
  }

  function begin() {
   mysql_query("BEGIN", $this->dbh);
  }

  function rollback() {
     mysql_query("ROLLBACK", $this->dbh);
  }

  function commit() {
   mysql_query("COMMIT", $this->dbh);
  }
}

which you could use to wrap around transactional statements like this:

$tx =& new Transaction("localhost", "username", "password");
$tx->begin();
$dbh = mysql_connect("localhost", "username", "password");
$result = mysql_query("INSERT ...");
if (!$result) {
  $tx->rollback();
} else {
  $tx->commit();
}
mysql_disconnect($dbh);
unset($tx);

The benefit of such a Transaction class is that it is generic and can wrap around any of your MySQL statements.
te dejo un ejemplo y un enlace a un articulo sobre el tema:
http://www.devarticles.com/c/a/MySQL...L-4.0-and-PHP/

saludos, cya
__________________
"El Conocimiento es de todos, no solo de algunos"

Última edición por deadlykyo; 11/02/2007 a las 20:57
  #5 (permalink)  
Antiguo 13/02/2007, 08:12
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 10 meses
Puntos: 2
Re: transacciones en MySQL 4.1.21-standard

gracias por la ayuda.
  #6 (permalink)  
Antiguo 13/02/2007, 08:20
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 10 meses
Puntos: 2
Re: transacciones en MySQL 4.1.21-standard

Ya entendi acerca de las transacciones, pero porque a las sentencias MYSQL les ponen el arroba(@,@mysql_query("BEGIN"),@mysql_query("COMMI T")) adelante, ya se que es una pregunta un poco basica, pero no entiendo muy bien, eso, yo se que en SQL para declarar variables se les pone el Arroba, pero, en este caso?

Código PHP:
<?php
// trans.php
function begin() 
{
@
mysql_query("BEGIN");
}
function 
commit()
{
@
mysql_query("COMMIT");
}
function 
rollback()
{
@
mysql_query("ROLLBACK");
}
@
mysql_connect("localhost","username""password") or die(mysql_error());
@
mysql_select_db("test") or die(mysql_error());
$query "INSERT INTO trans (id,item,quantity)
values (null,'Baseball',4)"
;
begin(); // transaction begins
$result = @mysql_query($query);
if(!
$result)
{
rollback(); // transaction rolls back
echo "you rolled back";
exit;
}
else 
{
commit(); // transaction is committed
echo "your insertion was successful";
}
?>
  #7 (permalink)  
Antiguo 13/02/2007, 09:51
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 19 años
Puntos: 5
Re: transacciones en MySQL 4.1.21-standard

El arroba que mencionas no es de mysql, es de php y se utiliza para que PHP no devuelva los errores si una llamada a una función causa un error en tiempo de ejecución. También bloquea los posibles warning.
__________________
"El Conocimiento es de todos, no solo de algunos"
  #8 (permalink)  
Antiguo 13/02/2007, 10:21
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 10 meses
Puntos: 2
Re: transacciones en MySQL 4.1.21-standard

gracias por sacarme de la duda deadKykyo
  #9 (permalink)  
Antiguo 12/03/2007, 07:34
 
Fecha de Ingreso: abril-2004
Mensajes: 48
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: transacciones en MySQL 4.1.21-standard

¿Y se puede hacer lo mismo con ASP?
  #10 (permalink)  
Antiguo 12/03/2007, 18:43
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Re: transacciones en MySQL 4.1.21-standard

Movido desde BD a PHP.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 12:13.