sqlsrv_fetch_array() expects parameter 2 to be long,

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Dennis B

Dennis B

02/01/2015 15:05:17
Quote Anchor link
Hallo,

Ik heb onderstaand script omgezet van mysql naar sqlsrv, hier gaat het fout, het script in mysql werkte!

Het script is voor het aanmaken van een gebruiker en controleert of er een bestaande gebruiker is.

De volgende foutmelding krijg ik: sqlsrv_fetch_array() expects parameter 2 to be long, string given in .... on line 13.

line 13 is onstaand gedeelte:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$userchecker = sqlsrv_fetch_array($stmt, sqlsrv_fetch_assoc);


hieronder het sql gedeelte van het script:

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
<?php
error_reporting(E_ALL & ~E_NOTICE);
 

    session_start();
    include'../connectdb.php';
    if(isset($_GET['add'])) {
        echo $_POST['gebruikersnaam'];    
    if (isset($_POST['voegtoe'])) {
        if($_POST['gebruikersnaam'] && $_POST['wachtwoord'] && $_POST['hwachtwoord']){
            $usernamecheck = "SELECT * FROM Customer WHERE EMail='$_POST[gebruikersnaam]'";
            $stmt = sqlsrv_query( $dbhandle, $usernamecheck );
            $userchecker = sqlsrv_fetch_array($stmt, sqlsrv_fetch_assoc);
            if ($_POST['gebruikersnaam'] != $userchecker['gebruikersnaam']){
                if ($_POST['wachtwoord']==$_POST['hwachtwoord']){
                    $passwordHash = sha1 ($_POST['wachtwoord']);
        

            
                    $query = "INSERT INTO Customer (CustomerID, CustomerNo, CustomerName, CurrencyID, EMail, Password, Rechten)
                                VALUES((SELECT NextCustomerID FROM CustCtl), (SELECT NextCustomerNo FROM CustCtl), '$_POST[naam]',
                                1, '$_POST[gebruikersnaam]', '$passwordHash', 2)"
;
                    if (!($result = @ sqlsrv_query($query, $dbhandle))) {
                        die( print_r( sqlsrv_errors(), true) );
                        }
                }

                    else {
                        echo "De opgegeven wachtwoorden komen niet overeen";
                    }
            }

                else{
                    echo "Het opgegeven gebruikersnaam bestaat al!";
                
                }
        }

        
        else {
            echo "Vul alle velden in!";
        }

?>


Alvast bedankt voor de oplossing :)
Gewijzigd op 02/01/2015 15:06:52 door Dennis B
 
PHP hulp

PHP hulp

08/05/2024 11:46:35
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 15:12:40
Quote Anchor link
Wijzig sqlsrv_fetch_assoc eens naar SQLSRV_FETCH_ASSOC op regel 13
 
Dennis B

Dennis B

02/01/2015 15:16:58
Quote Anchor link
Bedankt, die foutmelding is nu weg, nu houd ik deze nog alleen over:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
[email protected] ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -14 => -14 [2] => An invalid parameter was passed to sqlsrv_query. [message] => An invalid parameter was passed to sqlsrv_query. ) )
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 15:22:57
Quote Anchor link
Wat krijg je met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $query;
?>


tussen regel 22 en 23?

Je zou daar zeker prepared statements moeten gebruiken. zo is het echt onveilig om direct $_POST variabelen in je database te knallen.
 
Dennis B

Dennis B

02/01/2015 15:30:12
Quote Anchor link
dit:

[email protected] INTO Customer (CustomerID, CustomerNo, CustomerName, CurrencyID, EMail, Password, Rechten) VALUES((SELECT NextCustomerID FROM CustCtl), (SELECT NextCustomerNo FROM CustCtl), 'd', 1, '[email protected]', 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3', 2)Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -14
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
=> -14 [2] => An invalid parameter was passed to sqlsrv_query. [message] => An invalid parameter was passed to sqlsrv_query. ) )
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 16:12:20
Quote Anchor link
Op regel 23 heb je de parameters omgedraait. Je moet eerst de connectie en dan de query opgeven.

Toevoeging op 02/01/2015 16:12:48:

Waarom staat er een @ voor ?
 
Dennis B

Dennis B

02/01/2015 16:16:04
Quote Anchor link
die @ is een echo van het email adres, en die wordt gelijk voor de sql instructie getoond.

Toevoeging op 02/01/2015 16:18:21:

Maar het werkt, nadat ik de parameters omgedraait had. Dat daar de fouten al in kunnen zitten... Uren opgezocht. Maar het werkt. Hartstikke bedankt!!!

Toevoeging op 02/01/2015 16:21:44:

Ben er net achtergekomen, dat ie nog steeds niet goed werkt. Hij insert wel. Alleen als ik nog een keer hetzelfde mail adres invoer, krijg ik geen error maar wordt de insert gewoon uitgevoerd.

Dit is dus nog niet goed, waar kan dit aan liggen?

Nogmaals alvast bedankt!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 16:21:53
Quote Anchor link
:p kijken en nog eens kijken he

die @ is om foutmeldingen te onderdrukken. Lijkt me niet handig..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$result
= @ sqlsrv_query($query, $dbhandle))
?>


Haal die @ maar weg
 
Dennis B

Dennis B

02/01/2015 16:25:24
Quote Anchor link
Ow die @ :p.. Weggehaald, maar ik krijg geen foutmelding. die query mag niet uitgevoerd worden als het email adres al bestaat

Toevoeging op 02/01/2015 16:28:02:

laat maar, probleem al gevonden. Ik had mijn nieuwe sql code vervangen, en vergeten de database aan te passen

if ($_POST['gebruikersnaam'] != $userchecker['gebruikersnaam']){

moest zijn if ($_POST['gebruikersnaam'] != $userchecker['EMail']){

Toevoeging op 02/01/2015 16:28:24:

Maar alsnog hartstikke bedankt!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 16:29:19
Quote Anchor link
succes er mee
 



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.