Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 11 van 11

Onderwerp: array-gegevens opslaan in database

  1. #1
    Senior Member
    Geregistreerd
    8 november 2011
    Locatie
    Zoetermeer
    Vraag is opgelost

    array-gegevens opslaan in database

    Er gaat iets fout, maar ik zie het even niet.
    Alle bestanden worden gelezen en zijn ook zichtbaar
    alsmede de array.
    Probleem is dat hij niet opslaat.
    PHP Code:
    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
    
    <?php
    error_reporting(E_ALL);
    $db  = array(   'host'      => 'localhost',
            'user'      => 'root',
            'pw'        => '' ,
            'db'    => 'xxxxxx');
    $conn = mysqli_connect( $db['host'], $db['user'], $db['pw'], $db['db'] );
    if(mysqli_connect_errno($conn)) 
    { 
        trigger_error('Fout bij verbinden met database: '.mysqli_connect_error()); 
    } else {
        echo "Verbinding gemaakt";
        }
        
    $dir = 'foto';
    $handle = opendir($dir);
     
    $bestanden = array();
    while (false !== ($file = readdir($handle))) {
           // Verwijderen van de extensie met punt
           //$file1= $file;
           $file1= substr($file,0,strlen($file)-4);
           //Laat bestandsnamen even zien
           echo $file1."\n";
          
           $bestanden[] = $file1;
           echo '<br>';
    }
             
            /* Foreach loopje om de gegevens voor in de query uit te voeren */
            foreach($bestanden as $Value)
            {            
                
                $sql_insert = 'INSERT INTO fotos (fotonaam) VALUES ('.$Value.')';      
            
            /* Resultaat van de query */
                $Result = mysqli_query($conn,$sql_insert);
               
            /* Kijken of de query is gelukt */
                if(!$Result)
                {
                /* Fout in de query */
                    echo 'Er is een fout opgetreden in de query, Volgende fout is ontdekt: '.mysqli_error();
                }
                else
                {
                /* Query succesvol uitgevoerd */
                    echo 'De query is succesvol uitgevoerd.';
                }
            }
     
    ?>
    Laatst aangepast door weswillem : 2 maart 2020 om 18:43

  2. #2
    Member awc's avatar
    Geregistreerd
    16 september 2008
    Volgens mij mis je een (
    $sql_insert = 'INSERT INTO fotos (fotonaam) VALUES ('.$Value.')';

  3. #3
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Welke error zie je?

  4. #4
    Senior Member
    Geregistreerd
    8 november 2011
    Locatie
    Zoetermeer
    Wil eigenlijk zo'n 650 bestandnamen in de database zetten.

    betreft foto's met ext. maar die haal ik er af.

    maar krijg tig stuks deze foutmeldingen
    PHP Code:
    1
    
    Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\wamp\www\fotosinvoegen\index.php on line 63

  5. #5
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Je mist je connectie in je mysqli_error(). De melding zegt al dat er '1 parameter wordt verwacht, en dat er 0 gegeven zijn'

    Zoals php.net/mysqli_error aangeeft:
    Procedural style
    mysqli_error ( mysqli $link ) : string

    Returns the last error message for the most recent MySQLi function call that can succeed or fail.

    Parameters

    link
    Procedural style only: A link identifier returned by mysqli_connect() or mysqli_init()
    Laatst aangepast door PHP4U : 2 maart 2020 om 18:59

  6. #6
    Senior Member
    Geregistreerd
    8 november 2011
    Locatie
    Zoetermeer
    Bij print_r($bestanden);
    Array ( [0] => [1] => [2] => 000 [3] => 001 [4] => 001c [5] => 001d [6] => 001e [7] => 001f [8] => 001g [9] => 002 [10] => 003
    dit gaat door tot 657.
    Krijg vervolgens de navolgende foutmelding.
    Er is een fout opgetreden in de query, Volgende fout is ontdekt: Column count doesn't match value count at row 1
    Er is een fout opgetreden in de query, Volgende fout is ontdekt: Unknown column '001c' in 'field list'

  7. #7
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    1e error komt omdat je het aantal velden niet gelijk is aan het aantal VALUES
    2e error komt omdat je je veld niet bestaat. Een veld wat 001c heet, klinkt sowieso al niet zuiver qua databaseopzet.

  8. #8
    Senior Member
    Geregistreerd
    8 november 2011
    Locatie
    Zoetermeer
    na enige tijd stoeien de volgende oplossing
    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    foreach($bestanden as $key => $Value)
            {            
            $sql_insert = "INSERT INTO fotos";
            $sql_insert .= " ( id ,fotonaam)";
            $sql_insert .= " VALUES";
            $sql_insert .= "  ('".$key."', '".$Value."')"; 
                
                   /* Resultaat van de query */
                $Result = mysqli_query($conn,$sql_insert);
    Laatst aangepast door weswillem : 3 maart 2020 om 12:11 Reden: code aangepast

  9. #9
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Dan moet je wel $sql_insert in je query gebruiken.

  10. #10
    Senior Member
    Geregistreerd
    8 november 2011
    Locatie
    Zoetermeer
    @PHP4U
    Heb deze aangepast.
    Bedankt voor de ondersteuning

  11. #11
    Mega Senior
    Geregistreerd
    18 september 2006
    Ik heb PHP zelf al jaren niet meer aangeraakt, en heb er ook nooit echt veel mee gedaan. Hoewel het in dit geval niet zoveel kwaad kan, gezien je enkel een lijst met bestanden uit een directory ophaalt en deze wegschrijft. Wil ik toch even opmerken dat waardes rechtstreeks in je INSERT INTO query stoppen vaak niet de beste aanpak is. Als de waardes die je rechtstreeks in je query stopt gebruikersinvoer is zou dit zomaar SQL injection mogelijk kunnen maken. Beter gebruik je iets als prepared statements.
    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl

Regels
Help

Helpmij.nl en business

Partners
Sponsoren