MySQL - Enviar consulta e INSERT solo si el field no esta duplicado

 
Vista:

Enviar consulta e INSERT solo si el field no esta duplicado

Publicado por sebastian (2 intervenciones) el 29/08/2014 08:12:12
Hola, hace una semana empece con PHP,MySQL, tengo 2 scrips php uno para enviar datos hacia la db y otro para recibir, el tema esta en que quiero subir puntajes con un nickname, pero no quiero que se dupliquen, osea solo un puntaje por nombre, hasta ahora logro subir los puntajes pero no evitar que se dupliquen. este es el codigo hasta ahora:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
 
	$user = 'root';
	$pass = '';
	$localhost = 'localhost';
	$dbname = 'hjk';
	$secretKey = "mySecretKey";
 
        try {
    $dbh = new PDO('mysql:host=$localhost;dbname=$dbname', $user, $pass);
 
		} catch (PDOException $e) {
			print "Error!: " . $e->getMessage() . "<br/>";
		die();
		}
 
 
		 $realHash = md5($_GET['name'] . $_GET['score'] . $secretKey);
 
 
 
 
        $real_hash = md5($name . $score . $secretKey);
        if($real_hash == $hash) {
 
		$update = dbh->prepare("SELECT name FROM scores WHERE name=?");
		$update->execute($_GET['name']);
		if($update==0)
		{
		$new = $dbh->prepare("INSERT INTO scores VALUES(null,:name,:score) ");
		try{
			$new->execute($_GET);
		}
		catch(Exception $e)
		{
			  echo '<h1>Cant Upload Score</h1><pre>';
 
		}
 
		}
		else
		{
		$upd = $dbh->prepare("UPDATE scores SET name=? score=?");
		try{
		$upd->execute(array($_GET['name'],$_GET['score']));
		}
		catch(Exception $e)
		{
		  echo '<h1>Cant Updated Score</h1><pre>';
		}
 
		}
 
 
 
		  }
 
 
 
 
 
		$dbh = null;
?>

Gracias!!
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
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Enviar consulta e INSERT solo si el field no esta duplicado

Publicado por xve (1151 intervenciones) el 29/08/2014 09:03:56
Hola Sebastian, a mi modo de ver lo puedes hacer de dos maneras...

1.- Desde tu código PHP, hacer una consulta para ver si existe dicho nick, si existe, no insertas el registro.

2.- Poner el campo nickname de la base de datos como campo único... de esta manera, no permitirá duplicados. algo así:
1
ALTER TABLE `TuTabla` ADD UNIQUE(`nickname`);

Si intentas añadir un registro con el nickname duplicado, te generara un error de sql

Espero que te sirva...
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

Enviar consulta e INSERT solo si el field no esta duplicado

Publicado por Juan Manuel Castañeda (62 intervenciones) el 02/09/2014 01:07:49
UPDATE scores SET score=? WHERE name=?
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

Enviar consulta e INSERT solo si el field no esta duplicado

Publicado por sebastian (2 intervenciones) el 02/09/2014 01:10:19
si precisamente use ese comando, combinado con while. Quedo joya.
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