mysql naar mysqli in een forum registratie-script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart de kinkelaar

bart de kinkelaar

31/10/2014 20:05:14
Quote Anchor link
Ik krijg op mijn registratiepagina steeds


"Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\forum\registreren.php on line 22"

Kan iemand mij helpen met hoe ik dat oplos?
De PHP Forum-tutorial kwam trouwens van http://www.phphulp.nl/php/tutorial/data-verwerking/2-simpel-forum-compleet-in-te-bouwen-v2/492/
 
PHP hulp

PHP hulp

29/03/2024 02:10:14
 
- Ariën  -
Beheerder

- Ariën -

31/10/2014 20:08:57
Quote Anchor link
Je moet in mysqli_error() ook de variabele opgeven van je mysqli_connect()
 
Obelix Idefix

Obelix Idefix

01/11/2014 11:32:09
Quote Anchor link
Crossposting: http://www.pfz.nl/forum/topic/10953-mysql-naar-mysqli/

Dat je op meerdere fora je vraag post, is prima, maar laat dat dan wel even weten.
Je zou de eerste niet zijn die op een ander forum een oplossing krijgt aangereikt of aanvullende informatie plaatst, maar dat niet deelt met bv. dit forum. Mensen proberen je dan te helpen, zonder te weten dat het probleem mogelijk al is opgelost.
 
Willem vp

Willem vp

01/11/2014 12:58:19
Quote Anchor link
Wat ik altijd zo opmerkelijk vind aan dit soort vragen, is dat de TS de moeite doet om op twee verschillende fora een bericht te plaatsen met als risico dat het dagen duurt voor er een goed antwoord uit komt (áls er al een zinnig antwoord komt) terwijl in minder dan de tijd die het kost om een bericht in te tikken het antwoord gevonden kan worden in de documentatie...
 
Bart de kinkelaar

bart de kinkelaar

01/11/2014 14:08:58
Quote Anchor link
Het klopt dat ik het ook op 1 ander forum heb staan. Maar stel op dat forum komt een goed antwoord dan post ik dat hier heus wel Obelix;)

Die site heb ik gezien Willem VP, maar het is me niet gelukt daar een oplossing vandaan te halen.

Aar, zou je misschien je antwoord kunnen verduidelijken?
Gewijzigd op 01/11/2014 14:09:18 door bart de kinkelaar
 
Willem vp

Willem vp

01/11/2014 16:51:30
Quote Anchor link
Ergens in je code maak je verbinding door mysqli_connect() aan te roepen:

$dbh = mysqli_connect($host,$user,$pass,$database);

Die $dbh (of hoe je dat ding ook wilt noemen) is de variabele die Aar bedoelde. Die moet je als parameter aan mysqli_error() meegeven:

mysqli_error($dbh);

De foutmelding die je nu krijgt, is omdat je mysqli_error() zonder parameters aanroept. PHP klaagt dan dat hij niet voldoende gegevens heeft om zijn werk te kunnen doen.
 
Bart de kinkelaar

bart de kinkelaar

01/11/2014 19:25:55
Quote Anchor link
De warning die hij gaf is door dat dbh weg. Maar nu doet hij iets anders:
Quote:
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\forum\registreren.php on line 23


Terwijl dit de code is in dat deel van de code (line 20-26):
Quote:
function gebruikersnaam_check($gebruikersnaam){
$con = $gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam=".$gebruikersnaam.";";
$gebruikersnaam_sql = mysqli_query($con, $gebruikersnaam_query)or die(mysqli_error($dbh)
if(mysql_num_rows($gebruikersnaam_sql) == 0)
{$bezet = 'nee' ;}
else{$bezet = 'ja';}
return $bezet;
Gewijzigd op 01/11/2014 19:28:58 door bart de kinkelaar
 
Obelix Idefix

Obelix Idefix

01/11/2014 21:36:50
Quote Anchor link
De foutmelding lijkt me toch vrij duidelijk....
Je begint een if-statement op een plek waar dat niet wordt verwacht.
Een mogelijke oorzaak is dat er een fout zit in de regel er voor.

Op PFZ zag ik volgens mij een stukje code staan die ik hier mis (pfz ligt er momenteel (weer) uit). Daar stond eregi in, als ik me niet vergis.
Gaat je een (fout)melding opleveren; eregi is vervallen. "Tip: eregi() is deprecated as of PHP 5.3.0. preg_match() with the i (PCRE_CASELESS) modifier is the suggested alternative."

Bart de kinkelaar op 01/11/2014 14:08:58:
Het klopt dat ik het ook op 1 ander forum heb staan. Maar stel op dat forum komt een goed antwoord dan post ik dat hier heus wel Obelix;)

Prima. Heb onlangs weer iemand gezien die dat dus niet doet. En ik vind dat niet netjes naar mensen die je proberen te helpen.
Volgens mij staat er overigens wel andere informatie (/code) op PFZ dan hier (kan dat nu niet controleren omdat PFZ plat ligt).
 
Bart de kinkelaar

bart de kinkelaar

01/11/2014 23:29:54
Quote Anchor link
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
error_reporting(E_ALL);
include('verbind.php');
    if(isset($_POST['registreer'])){

        function
email_validator($email){
            if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
               {
$geldig = 'ja';   }
           else{$geldig = 'nee';}
        return $geldig;
        }
        function
email_check($email){
                $email_query = "SELECT gebruiker_email FROM gebruiker WHERE gebruiker_email='".$email."';";
                $email_sql   = mysql_query($email_query)or die(mysql_error());
                if(mysql_num_rows($email_sql) == 0)
                    {
$bezet =  'nee';}
                else{$bezet =  'ja' ;}
                return $bezet;
        }
        function
gebruikersnaam_check($gebruikersnaam){
                $con = $gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam=".$gebruikersnaam.";";
                $gebruikersnaam_sql = mysqli_query($con, $gebruikersnaam_query)or die(mysqli_error($dbh)
                if(mysql_num_rows($gebruikersnaam_sql) == 0)
                    {
$bezet =  'nee' ;}
                else{$bezet =  'ja';}  
                return $bezet;
        }


            if(trim($_POST['gebruikersnaam']) == ""){
                    echo 'U heeft geen gebruikersnaam ingevuld';
            }
elseif(gebruikersnaam_check($_POST['gebruikersnaam']) == 'ja'){
                echo 'Deze gebruikersnaam is al in gebruik, kies a.u.b een ander.';
               }
elseif($_POST['wachtwoord1'] != $_POST['wachtwoord2']){
                 echo 'De opgegeven wachtwoorden komen niet overeen';
               }
elseif($_POST['wachtwoord1'] == ""){
                 echo 'Er zijn geen wachtwoord<b>en</b> opgegeven';
               }
elseif(email_validator($_POST['emailadres']) == 'nee'){
                   echo 'Het ingevulde emailadres is niet geldig';
               }
elseif(email_check($_POST['emailadres']) ==  'ja'){
                   echo 'Er is al iemand geregistreerd met dit emailadres.';
               }
else{
                    $query = "INSERT INTO gebruiker
                              (gebruiker_naam, gebruiker_wachtwoord, gebruiker_email)
                              VALUES
                              ('"
.mysql_real_escape_string($_POST['gebruikersnaam'])."',
                                '"
.md5($_POST['wachtwoord1'])."',
                                '"
.$_POST['emailadres']."');";
                   $sql = mysql_query($query)or die(mysql_error());
                echo 'U bent succesvol aangemeld. Hieronder kunt u inloggen:';
                include('inloggen.php');              
               }
}
else{

    ?>

<form action="registreren.php" method="POST">
<table>
<tr><td>Gebruikersnaam:</td><td><input type="text" name="gebruikersnaam" value=""></td></tr>
<tr><td>Wachtwoord:</td><td><input type="password" name="wachtwoord1" value=""></td></tr>
<tr><td>Wachtwoord nogmaals:</td><td><input type="password" name="wachtwoord2" value=""></td></tr>
<tr><td>Emailadres:</td><td><input type="text" name="emailadres" value=""></td></tr>
<tr><td></td><td><input type="submit" name="registreer" value="Aanmelden">
</table>
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
}

?>

De foutmelding die ik krijg:
Quote:
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\forum\registreren.php on line 23
Gewijzigd op 02/11/2014 11:20:20 door bart de kinkelaar
 
Obelix Idefix

Obelix Idefix

02/11/2014 15:48:35
Quote Anchor link
Bart de kinkelaar op 01/11/2014 23:29:54:
De foutmelding die ik krijg:
Quote:
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\forum\registreren.php on line 23

Obelix en Idefix op 01/11/2014 21:36:50:
De foutmelding lijkt me toch vrij duidelijk....
Je begint een if-statement op een plek waar dat niet wordt verwacht.
Een mogelijke oorzaak is dat er een fout zit in de regel er voor.


Ten aanzien van de code:
eregi is, zoals aangegeven vervallen.
mysql komt te vervallen. Stap over op mysqli of pdo
Or die is geen nette foutafhandeling. Een bezoeker hoeft ook geen mysql error te zien.
md5 is een oude manier om een wachtwoord te beveiligen. Schijnt (eenvoudig) gekraatk te kunnen worden. Kijk naar bv. bcrypt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.