Insertar otra actualización de PHP

  • seularts
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Ene 02, 2007
  • Mensajes: 147
  • Loc: Romania
  • Status: Offline

Nota Mayo 29th, 2011, 9:37 am

Hola

Tengo un pequeño problema con mi código. No sé cómo editar el código para insertar mis valores en la base de datos si no se pueden actualizar (si no existen en la tabla de la base de datos).

Código: [ Select ]
    $SQL1 = "UPDATE tdp_base SET bid_value='$val1' WHERE bid_class='Bid_1'";
    $SQL2 = "UPDATE tdp_base SET bid_value='$val2' WHERE bid_class='Bid_2'";
    $SQL3 = "UPDATE tdp_base SET bid_value='$val3' WHERE bid_class='Bid_3'";
    $SQL4 = "UPDATE tdp_base SET bid_value='$val4' WHERE bid_class='Bid_4'";
    $SQL5 = "UPDATE tdp_base SET bid_value='$val5' WHERE bid_class='Bid_5'";
    $SQL6 = "UPDATE tdp_base SET bid_value='$val6' WHERE bid_class='Bid_6'";
    $SQL7 = "UPDATE tdp_base SET bid_value='$val7' WHERE bid_class='Bid_7'";

$result1 = mysql_query($SQL1);
$result2 = mysql_query($SQL2);
$result3 = mysql_query($SQL3);
$result4 = mysql_query($SQL4);
$result5 = mysql_query($SQL5);
$result6 = mysql_query($SQL6);
$result7 = mysql_query($SQL7);
  1.     $SQL1 = "UPDATE tdp_base SET bid_value='$val1' WHERE bid_class='Bid_1'";
  2.     $SQL2 = "UPDATE tdp_base SET bid_value='$val2' WHERE bid_class='Bid_2'";
  3.     $SQL3 = "UPDATE tdp_base SET bid_value='$val3' WHERE bid_class='Bid_3'";
  4.     $SQL4 = "UPDATE tdp_base SET bid_value='$val4' WHERE bid_class='Bid_4'";
  5.     $SQL5 = "UPDATE tdp_base SET bid_value='$val5' WHERE bid_class='Bid_5'";
  6.     $SQL6 = "UPDATE tdp_base SET bid_value='$val6' WHERE bid_class='Bid_6'";
  7.     $SQL7 = "UPDATE tdp_base SET bid_value='$val7' WHERE bid_class='Bid_7'";
  8. $result1 = mysql_query($SQL1);
  9. $result2 = mysql_query($SQL2);
  10. $result3 = mysql_query($SQL3);
  11. $result4 = mysql_query($SQL4);
  12. $result5 = mysql_query($SQL5);
  13. $result6 = mysql_query($SQL6);
  14. $result7 = mysql_query($SQL7);


Por ejemplo, si no existe el atributo Bid_1 en bid_value, en la tabla desea insertar toda la fila como este:

Código: [ Select ]
$SQL1_insert = "INSERT INTO tdp_base (bid_class,bid_value) VALUES ('Bid_1','$val1')";
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Mayo 29th, 2011, 9:37 am

  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Mayo 29th, 2011, 12:40 pm

Asegúrese primero de que te tienes que tener una configuración de índice como única en cualquier valor que está esperando a ser único para que MySQL sabe hay sólo debe existir una entrada por valor único o principal. Una vez, asegúrese de que está establecido, entonces puede suelen hacerlo (suponiendo que su campo1 es la clave única):

SQL Código: [ Select ]
INSERT INTO some_table (field1, field2) VALUES ('value1', 'value2')
ON DUPLICATE KEY UPDATE field2 = 'value2'
  1. INSERT INTO some_table (field1, field2) VALUES ('value1', 'value2')
  2. ON DUPLICATE KEY UPDATE field2 = 'value2'


Por lo que es lo que sucede aquí insertará los nuevos valores en la base de datos, pero si ya existe la clave única, a continuación, en lugar de insertar en su lugar actualizará donde esa clave ya existe.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • seularts
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Ene 02, 2007
  • Mensajes: 147
  • Loc: Romania
  • Status: Offline

Nota Mayo 29th, 2011, 2:45 pm

OK, esto funciona parrilla para un valor, pero la cosa es que tengo varios usuarios insertar/actualizar sus valores en esta tabla, y sólo se elevarán la clave principal en el camino. La cosa es que quiero introducir valores de 7 en la base de datos a la vez, pero si no existen debería poder crear todas las 7 filas para cada usuarios individuales que presenta.

Obviamente se insertará el nombre del usuario en un índice en la tabla para cada fila, el valor insertado o actualizado, para distinguir sus 7 valores de los otros usuarios.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Junio 4th, 2011, 11:38 am

Espero que lo estoy entendiendo correctamente, básicamente usted dice quizá desee insertar varios valores a la vez y si ya existe después actualizarlo. Muy similar a lo que escribí sobre excepto con varios valores. Aquí hay un ejemplo de cómo haría:

SQL Código: [ Select ]
INSERT INTO some_table (field1, field2)
VALUES ('value1', 'value2'), ('anothervalue1', 'anothervalue2'), ('morestuff1', 'morestuff2')
ON DUPLICATE KEY UPDATE field2 = VALUES(field2)
  1. INSERT INTO some_table (field1, field2)
  2. VALUES ('value1', 'value2'), ('anothervalue1', 'anothervalue2'), ('morestuff1', 'morestuff2')
  3. ON DUPLICATE KEY UPDATE field2 = VALUES(field2)


Las áreas que escribí campo2, que sería con todo lo que es el nombre del segundo campo, con los ejemplos anteriores se pondría exactamente "bid_value" para field2. ¿Tiene sentido?
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • seularts
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Ene 02, 2007
  • Mensajes: 147
  • Loc: Romania
  • Status: Offline

Nota Junio 4th, 2011, 11:55 am

Pues sí, tipo de, pero encontré la manera más sencilla. Porque no podía definir el usuario como clave primaria, hice un filtro como este:

Código: [ Select ]

        if($find['user']!=$the_name){
            $SQL1 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_1', '1', '$val1', 'Carcasa', '$the_name')";
            $SQL2 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_2', '2', '$val2', 'Carcasa', '$the_name')";
            $SQL3 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_3', '3', '$val3', 'Carcasa', '$the_name')";
            $SQL4 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_4', '4', '$val4', 'Carcasa', '$the_name')";
            $SQL5 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_5', '5', '$val5', 'Carcasa', '$the_name')";
            $SQL6 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_6', '6', '$val6', 'Carcasa', '$the_name')";
            $SQL7 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_7', '7', '$val7', 'Carcasa', '$the_name')";
        }else{
            $SQL1 = "UPDATE tdp_base SET bid_value='$val1' WHERE prod_class='Carcasa' AND bid_class='Bid_1' AND user='$the_name'";
            $SQL2 = "UPDATE tdp_base SET bid_value='$val2' WHERE prod_class='Carcasa' AND bid_class='Bid_2' AND user='$the_name'";
            $SQL3 = "UPDATE tdp_base SET bid_value='$val3' WHERE prod_class='Carcasa' AND bid_class='Bid_3' AND user='$the_name'";
            $SQL4 = "UPDATE tdp_base SET bid_value='$val4' WHERE prod_class='Carcasa' AND bid_class='Bid_4' AND user='$the_name'";
            $SQL5 = "UPDATE tdp_base SET bid_value='$val5' WHERE prod_class='Carcasa' AND bid_class='Bid_5' AND user='$the_name'";
            $SQL6 = "UPDATE tdp_base SET bid_value='$val6' WHERE prod_class='Carcasa' AND bid_class='Bid_6' AND user='$the_name'";
            $SQL7 = "UPDATE tdp_base SET bid_value='$val7' WHERE prod_class='Carcasa' AND bid_class='Bid_7' AND user='$the_name'";
        }
        $result1 = mysql_query($SQL1);
        $result2 = mysql_query($SQL2);
        $result3 = mysql_query($SQL3);
        $result4 = mysql_query($SQL4);
        $result5 = mysql_query($SQL5);
        $result6 = mysql_query($SQL6);
        $result7 = mysql_query($SQL7);
  1.         if($find['user']!=$the_name){
  2.             $SQL1 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_1', '1', '$val1', 'Carcasa', '$the_name')";
  3.             $SQL2 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_2', '2', '$val2', 'Carcasa', '$the_name')";
  4.             $SQL3 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_3', '3', '$val3', 'Carcasa', '$the_name')";
  5.             $SQL4 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_4', '4', '$val4', 'Carcasa', '$the_name')";
  6.             $SQL5 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_5', '5', '$val5', 'Carcasa', '$the_name')";
  7.             $SQL6 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_6', '6', '$val6', 'Carcasa', '$the_name')";
  8.             $SQL7 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_7', '7', '$val7', 'Carcasa', '$the_name')";
  9.         }else{
  10.             $SQL1 = "UPDATE tdp_base SET bid_value='$val1' WHERE prod_class='Carcasa' AND bid_class='Bid_1' AND user='$the_name'";
  11.             $SQL2 = "UPDATE tdp_base SET bid_value='$val2' WHERE prod_class='Carcasa' AND bid_class='Bid_2' AND user='$the_name'";
  12.             $SQL3 = "UPDATE tdp_base SET bid_value='$val3' WHERE prod_class='Carcasa' AND bid_class='Bid_3' AND user='$the_name'";
  13.             $SQL4 = "UPDATE tdp_base SET bid_value='$val4' WHERE prod_class='Carcasa' AND bid_class='Bid_4' AND user='$the_name'";
  14.             $SQL5 = "UPDATE tdp_base SET bid_value='$val5' WHERE prod_class='Carcasa' AND bid_class='Bid_5' AND user='$the_name'";
  15.             $SQL6 = "UPDATE tdp_base SET bid_value='$val6' WHERE prod_class='Carcasa' AND bid_class='Bid_6' AND user='$the_name'";
  16.             $SQL7 = "UPDATE tdp_base SET bid_value='$val7' WHERE prod_class='Carcasa' AND bid_class='Bid_7' AND user='$the_name'";
  17.         }
  18.         $result1 = mysql_query($SQL1);
  19.         $result2 = mysql_query($SQL2);
  20.         $result3 = mysql_query($SQL3);
  21.         $result4 = mysql_query($SQL4);
  22.         $result5 = mysql_query($SQL5);
  23.         $result6 = mysql_query($SQL6);
  24.         $result7 = mysql_query($SQL7);


Así que básicamente si el usuario no se encuentra en la tabla, crear las filas, si existe y actualiza los valores donde se define el usuario. Se ve feo, lo sé, pero funciona a las mil maravillas:)
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Junio 4th, 2011, 12:01 pm

Contento encontró una solución que funcione para usted. ¿Tengo curiosidad por qué no puede definir el campo de usuario como una clave principal o única?
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Junio 4th, 2011, 12:37 pm

PHP Código: [ Select ]
$sql = array('INSERT INTO...', 'INSERT INTO...', 'INSERT INTO...');
$result = array();
foreach($sql as $query)
{
    $result[] = mysql_query($query);
}
  1. $sql = array('INSERT INTO...', 'INSERT INTO...', 'INSERT INTO...');
  2. $result = array();
  3. foreach($sql as $query)
  4. {
  5.     $result[] = mysql_query($query);
  6. }

Espero que tenga sentido para qué sugiriendo de Im.
"Bring forth therefore fruits meet for repentance:" Matthew 3:8

Publicar Información

  • Total de mensajes en este tema: 7 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 219 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC