PHP - Error en consultas y inserciones PDO

   
Vista:
Imágen de perfil de marti

Error en consultas y inserciones PDO

Publicado por marti (5 intervenciones) el 06/01/2017 18:46:43
Buenos días,

Me podrías ayudar en este trozo de código..

Primero de todo hago una consulta para mirar si el identificador se ha insertado antes (Nunca puede estar repetido), luego, si no existe lo inserto en la base de datos.

Cundo lo ejecuto me salta la excepción.

Conexión base dedatos MYSQL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
function connect_db() {
	try {
		$connection = new PDO ( 'mysql:host=localhost;dbname=xxx', 'xxx', 'xxx' );
		$connection->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
		$connection->setAttribute ( PDO::ATTR_PERSISTENT, true );
	} catch ( PDOException $e ) {
		// Proccess error
		echo 'Cannot connect to database: ' . $e->getMessage ();
	}
 
	return $connection;
}
 
?>

Código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Try {
 
	$con = connect_db ();
 
	$sql = "SELECT txn_id FROM pagaments WHERE txn_id = ?";
	$stmt = $con->prepare ( $sql );
	$stmt->execute ( array (
			$txn_id
	) );
	$filas = $stmt->fetchColumn ();
 
	if ($filas = 0) {
 
		$sql = "INSERT INTO pagaments (txn_id) VALUES (?)";
		$stmt = $con->prepare ( $sql );
		$stmt->execute ( array (
				$txn_id
		) );
	} else {
 
		throw new Exception ( "Error en el pagament, torna-ho a intentar.", 1 );
	}
} catch ( PDOException $e ) {
	echo 'Error PDO: ' . $e->getMessage ();
}


Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Error en consultas y inserciones PDO

Publicado por xve (6036 intervenciones) el 06/01/2017 20:25:21
Hola Marti, tendrias que comprobar si el error es de la conexión a la base de datos, o de los atributos.

Puedes comentar las dos lineas de los atributos y ver si te da el mismo error?
También puedes comentar las lineas try y catch para ver donde da el error... puede ser porque no se conecta a la base de datos, o porque no esta activo el PDO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar