MySQL-fout: Dubbele ingang voor...		
			
		
		 		
				
		
                        
                 
                 
                 
             
            
            
				
                
                     
                    CyberKieken   - 10/04/2005 15:34 (laatste wijziging 10/04/2005 15:34)                       
             
             
                        
                HTML interesse  
                 
                
				
				Ik ben bezig een soort leden-systeem te maken, en na aanmelding worden de gebruikersgegevens opgeslagen in een MySQL-database. 
Tot zover alles normaal, maar ik krijg altijd een fout bij het invoegen van de gegevens in de database. Dus laat ik mijn script voor het testen eens de query echoën en dan krijg ik de volgende query:
    
    
        
            
                 INSERT INTO `leden` ( `id` , `username` , `lvl` , `voornaam` , `achternaam` , `email` , `teamnaam` , `team_id` , `aanmelding` , `paswoord` , `land` , `cont` , `ip` )
VALUES (
'', 'sio', '0', 'sio', 'vanwzl', 'sio@wzl.com', 'staafies', '5893156', 'now()', '4fa52a3a7701ec02d06310098', '106', '0', '127.0.0.1'
)  
             
            INSERT INTO `leden` (  `id` ,  `username` ,  `lvl` ,  `voornaam` ,  `achternaam` ,  `email` ,  `teamnaam` ,  `team_id` ,  `aanmelding` ,  `paswoord` ,  `land` ,  `cont` ,  `ip` ) 
VALUES ( 
'' ,  'sio' ,  '0' ,  'sio' ,  'vanwzl' ,  'sio@wzl.com' ,  'staafies' ,  '5893156' ,  'now()' ,  '4fa52a3a7701ec02d06310098' ,  '106' ,  '0' ,  '127.0.0.1' 
) 
 
         
         
     
   
Niet letten op de gegevens, die zijn maar testdata ;) dit lijkt me toch een deftige query, maar MySQL retourneert ook bij het invoeren via phpMyAdmin een fout:Citaat: 
#1062 - Dubbele ingang '32767' voor zoeksleutel 2  
Notice: Undefined offset: 1 in c:program fileseasyphp1-8phpmyadminlibrariescommon.lib.php on line 681 
 
Notice: Undefined offset: 1 in c:program fileseasyphp1-8phpmyadminlibrariescommon.lib.php on line 685 
 
Warning: mysql_result(): Unable to jump to row -1 on MySQL result index 61 in c:program fileseasyphp1-8phpmyadminlibrariescommon.lib.php on line 685
   
de velden id, team_id en username moeten uniek zijn (id is auto_increment), maar aangezien er maar 2 users in de db zitten kan ik gemakkelijk zien dat er geen overlappingen zijn... 
 
Heeft er misschien iemand een idee wat ik fout doe en hoe ik het kan oplossen? 
(die php-errors lijken me ook maar een vage bedoening daartussen, zou het daaraan kunnen liggen?)				
				 
              
        
		
				
		16 antwoorden 
                
                     Gesponsorde links 
                 
                
                    
		
		
	              
		
		
 
                 
            
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            zwobbel   - 10/04/2005 15:39                            
                         
                     
                    
                                                     PHP gevorderde  
                         
                        Probeer het zo is ne keer. 
    
    
        
            
                
<?
mysql_query("INSERT INTO `leden` ( `id` , `username` , `lvl` , `voornaam` , `achternaam` , `email` , `teamnaam` , `team_id` , `aanmelding` , `paswoord` , `land` , `cont` , `ip` )
VALUES (
'', 'sio', '0', 'sio', 'vanwzl', 'sio@wzl.com', 'staafies', '5893156', 'now()', '4fa52a3a7701ec02d06310098', '106', '0', '127.0.0.1'
) ");
?>
 
             
            <? 
mysql_query ( "INSERT INTO `leden` ( `id` , `username` , `lvl` , `voornaam` , `achternaam` , `email` , `teamnaam` , `team_id` , `aanmelding` , `paswoord` , `land` , `cont` , `ip` ) VALUES ( 
 
'', 'sio', '0', 'sio', 'vanwzl', 'sio@wzl.com', 'staafies', '5893156', 'now()', '4fa52a3a7701ec02d06310098', '106', '0', '127.0.0.1' 
) " ) ; 
?> 
 
         
         
     
  
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            CyberKieken   - 10/04/2005 15:42 (laatste wijziging 10/04/2005 15:45)                             
                         
                     
                    
                                                     HTML interesse  
                         
                        nope, helpt niet  
komen geen waarden bij in de db, en hij retourneert weer die error: 
    
    
        
            
                Dubbele ingang '32767' voor zoeksleutel 2 
             
            Dubbele ingang '32767'  voor zoeksleutel 2 
 
         
         
     
   
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            Franko   - 10/04/2005 15:43 (laatste wijziging 10/04/2005 15:44)                             
                         
                     
                    
                                                     Nieuw lid  
                         
                        $sql= "INSERT INTO leden ( id , username , lvl , voornaam , achternaam , email , teamnaam , team_id , aanmelding , paswoord , land , cont , ip ) 
VALUES ('', 'sio', '0', 'sio', 'vanwzl', 'sio@wzl.com', 'staafies', '5893156', 'now()', '4fa52a3a7701ec02d06310098', '106', '0', '127.0.0.1' 
)"; 
mysql_query($sql); 
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            CyberKieken   - 10/04/2005 15:46 (laatste wijziging 10/04/2005 15:47)                             
                         
                     
                    
                                                     HTML interesse  
                         
                        @Franko: is dat niet dezelfde query als Zwobbel gaf? 
anyway, kzal hem eens testen edit: geeft ook die error  
 
@Sasuke: ja, ik heb met hetzelfde script 2 gebruikers kunnen toevoegen en ik kan via een 'admin'-pagina de gebruikers verwijderen e.d. 
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            Franko   - 10/04/2005 15:52 (laatste wijziging 10/04/2005 15:55)                             
                         
                     
                    
                                                     Nieuw lid  
                         
                        hoe ziet je structuur van je DB eruit, 
Als ik alleen naar het voorbeeldje kijk zie ik dat sio er dubbel instaat, 
wellicht mogen username en voornaam niet hetzelfde zijn?? 
 
En laat common.lib.php eens zien, want daar zitten blijkbaar ook fouten in! 
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            CyberKieken   - 10/04/2005 15:54 (laatste wijziging 29/05/2010 15:25)                             
                         
                     
                    
                                                     HTML interesse  
                         
                        als ik phpMyAdmin de tabel laat exporteren krijg ik dit: (leek me de makkelijkste methode om de structuur voor te stellen) 
    
    
        
            
                CREATE TABLE `leden` (
  `id` smallint(6) NOT NULL auto_increment,
  `username` varchar(25) NOT NULL default '',
  `lvl` tinyint(4) NOT NULL default '0',
  `voornaam` varchar(25) NOT NULL default '',
  `achternaam` varchar(25) NOT NULL default '',
  `email` varchar(50) NOT NULL default '',
  `teamnaam` varchar(50) NOT NULL default '',
  `team_id` smallint(6) NOT NULL default '0',
  `aanmelding` mediumint(9) NOT NULL default '0',
  `paswoord` varchar(25) NOT NULL default '',
  `land` tinyint(4) NOT NULL default '0',
  `cont` tinyint(4) NOT NULL default '0',
  `ip` tinytext NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `team_id` (`team_id`),
  UNIQUE KEY `username` (`username`)
)
INSERT INTO `leden` VALUES (1, 'CyberKieken', 101, 'voornaam', 'achternaam', '********@******.**', 'Pigs In The Ocean', 32767, 8388607, '9179586eea6aadda675942c27', 44, 1, '127.0.0.1');
INSERT INTO `leden` VALUES (2, 'Nookie', 101, 'Nook', 'ie', 'nookie@wzl.com', 'Nookiedog', 23658, 8388607, 'adc7bf17404763ecac52e3306', 44, 1, '127.0.0.1');
 
             
            CREATE TABLE `leden` ( 
  `id` smallint( 6 )  NOT NULL  auto_increment, 
  `username` varchar( 25 )  NOT NULL  default  '' , 
  `lvl` tinyint( 4 )  NOT NULL  default  '0' , 
  `voornaam` varchar( 25 )  NOT NULL  default  '' , 
  `achternaam` varchar( 25 )  NOT NULL  default  '' , 
  `email` varchar( 50 )  NOT NULL  default  '' , 
  `teamnaam` varchar( 50 )  NOT NULL  default  '' , 
  `team_id` smallint( 6 )  NOT NULL  default  '0' , 
  `aanmelding` mediumint( 9 )  NOT NULL  default  '0' , 
  `paswoord` varchar( 25 )  NOT NULL  default  '' , 
  `land` tinyint( 4 )  NOT NULL  default  '0' , 
  `cont` tinyint( 4 )  NOT NULL  default  '0' , 
  `ip` tinytext NOT NULL , 
  UNIQUE 
KEY  `team_id` 
( `team_id`
) ,   UNIQUE 
KEY  `username` 
( `username`
) ) 
 
INSERT INTO `leden` VALUES ( 1 ,  'CyberKieken' ,  101 ,  'voornaam' ,  'achternaam' ,  '********@******.**' ,  'Pigs In The Ocean' ,  32767 ,  8388607 ,  '9179586eea6aadda675942c27' ,  44 ,  1 ,  '127.0.0.1' ) ; 
INSERT INTO `leden` VALUES ( 2 ,  'Nookie' ,  101 ,  'Nook' ,  'ie' ,  'nookie@wzl.com' ,  'Nookiedog' ,  23658 ,  8388607 ,  'adc7bf17404763ecac52e3306' ,  44 ,  1 ,  '127.0.0.1' ) ; 
 
         
         
     
   
 
edit: ligt ook niet aan de gelijke username en voornaam, als ik het met andere waarden probeer wilt hij ook niet  
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            CyberKieken   - 10/04/2005 16:01 (laatste wijziging 10/04/2005 16:02)                             
                         
                     
                    
                                                     HTML interesse  
                         
                        Common.lib leek me een beetje groot om hier te posten, staat on-line op http://obf.cyberkieken.be/common.lib.phps  
de lijnen met fouten zijn de volgende: 
    
    
        
            
                <?php        
if (substr($error_message, 1, 4) == '1062') { /*lijn 675*/
   // TODO: do not assume that the error message is in English
   // and do not use mysql_result()
       // explode the entry and the column
       $arr_mysql_val_key = explode('entry \'',$tmp_mysql_error);
       $arr_mysql_val_key = explode('\' for key',$arr_mysql_val_key[1]); /*lijn 681*/
       // get the duplicate value
       $string_duplicate_val = trim(strtolower($arr_mysql_val_key[0]));
       // get the field name ...
       $string_duplicate_key = mysql_result(mysql_query("SHOW FIELDS FROM " . $table), ($arr_mysql_val_key[1]-1), 0); /*lijn 685*/
        $duplicate_sql_query = "SELECT * FROM " . $table . " WHERE " . $string_duplicate_key . " LIKE '" . $string_duplicate_val . "'";
        echo '        <form method="post" action="read_dump.php" style="padding: 0px; margin: 0px">' ."\n"
                    . '            <input type="hidden" name="sql_query" value="' . $duplicate_sql_query . '" />' . "\n"
                    . '            ' . PMA_generate_common_hidden_inputs($db, $table) . "\n"
                    . '            <input type="submit" name="submit" value="' . $GLOBALS['strBrowse'] . '" />' . "\n"
                    . '        </form>' . "\n";
        }
?> 
             
            <?php         
if  ( substr ( $error_message ,  1 ,  4 )  ==  '1062' )  {  /*lijn 675*/    // TODO: do not assume that the error message is in English 
   // and do not use mysql_result() 
 
       // explode the entry and the column 
       $arr_mysql_val_key  =  explode ( 'entry \' ',$tmp_mysql_error);         $arr_mysql_val_key = explode(' \' for key' , $arr_mysql_val_key [ 1 ] ) ;  /*lijn 681*/ 
       // get the duplicate value 
       // get the field name ... 
       $string_duplicate_key  =  mysql_result ( mysql_query ( "SHOW FIELDS FROM "  .  $table ) ,  ( $arr_mysql_val_key [ 1 ] - 1 ) ,  0 ) ;  /*lijn 685*/          $duplicate_sql_query  =  "SELECT * FROM "  .  $table  .  " WHERE "  .  $string_duplicate_key  .  " LIKE '"  .  $string_duplicate_val  .  "'" ; 
        echo   '        <form method="post" action="read_dump.php" style="padding: 0px; margin: 0px">'  . "\n "                      .  '            <input type="hidden" name="sql_query" value="'  .  $duplicate_sql_query  .  '" />'  .  "\n " 
                    .  '            '  .  PMA_generate_common_hidden_inputs( $db ,  $table )  .  "\n " 
                    .  '            <input type="submit" name="submit" value="'  .  $GLOBALS [ 'strBrowse' ]  .  '" />'  .  "\n " 
                    .  '        </form>'  .  "\n " ; 
        } 
?> 
 
         
         
     
   
 
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            Franko   - 10/04/2005 16:06                            
                         
                     
                    
                                                     Nieuw lid  
                         
                        $arr_mysql_val_key = explode('\' for key',$arr_mysql_val_key[1]); /*lijn 681*/ 
 
moet denk ik zijn: 
 
$arr_mysql_val_key = explode('\' for key,$arr_mysql_val_key[1]); /*lijn 681*/ 
 
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            CyberKieken   - 10/04/2005 16:08                            
                         
                     
                    
                                                     HTML interesse  
                         
                        dan sluit je je aanhalingsteken (' ) toch niet ? 
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            Franko   - 10/04/2005 16:08                            
                         
                     
                    
                                                     Nieuw lid  
                         
                        er klopt iets niet met die '  Je hebt er 3 staan ipv een even aantal 
ook in regel 680. 
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            CyberKieken   - 10/04/2005 16:09                            
                         
                     
                    
                                                     HTML interesse  
                         
                        die worden toch ge-escaped... en dan is het wel een even aantal... 
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            Franko   - 10/04/2005 16:16                            
                         
                     
                    
                                                     Nieuw lid  
                         
                        je hebt gelijk. sorry 
 
verander ' eens in " 
                      
                
                    
                         
                         
                         
                     
                    
                    
                        
                             
                            vinTage   - 29/05/2010 15:33                            
                         
                     
                    
                                                     Nieuw lid  
                         
                        WTF @ kieken, na 5 jaar  werkt het nog steeds niet ofwa ????? 
                      
                
                    
                         Gesponsorde links 
                     
                    
                        
		
		
	              
		
		
 
                     
                
Dit onderwerp is gesloten .