Php code gebroken door php 7 update

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mijn vraag
Ik heb voor mijn stage een programma geschreven maar nadat ik na de zomervakantie terugkwam is deze code gebroken vanwege de update voor php 7. mijn vraag is of iemand mij hiermee kan helpen om deze errors op te lossen.
Error 1: Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp1\htdocs\ProdyneP\Modules\Welcome.php on line 52
Could not connect:

Error 2: Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp1\htdocs\ProdyneP\Modules\Welcome.php on line 85
Could not connect:

Error 3: Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp1\htdocs\ProdyneP\Modules\Welcome.php on line 126

Relevante software en hardware die ik gebruik
Ik gebruik xampp voor mijn lokale server en notepad++ voor mijn codering.

Wat ik al gevonden of geprobeerd heb
ik heb al wat dingen gevonden om bepaalde errors op te lossen maar er zijn er meer bij gekomen hierdoor.

Hierbij een link naar de code https://pastebin.com/aLExQP9s

Beste antwoord (via Verwijderd op 29-08-2017 12:58)


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Ik vind het eigenlijk wat vreemd dat men zonder alles grondig te testen en zonder jou als ontwikkelaar is gaan upgraden naar een nieuwe PHP-versie. Eerlijk gezegd vind ik dat alleen al best amateuristisch.

Ook kun je voor de genoemde functies prima de documentatite opvragen bij php.net, je kan dus zo zien wat er aan de code schort, wij zijn geen helpdesk wat dat betreft.

Als ik je een tip mag geven, ga over naar prepared statements en gebruik daarvoor een PDO-library, dan hoef je een boel code later niet nog eens te herschrijven én voorkom je SQL-injection. :)

PHP:
1
$connection = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE) or die("Error " . mysqli_error());
Het direct stoppen van het script, omdat er geen database connectie is, is ook erg lelijk en kan vele malen beter. Beter doe je vooraf je connectie maken voordat je überhaupt iets aan content verstuurt naar de client. Neem daarom ook dingen die staan op Stackoverflow daarom ook niet zomaar aan. Ja, het zal ongetwijfeld kunnen werken, maar hoeft niet altijd de beste oplossing te zijn voor zaken, dit zie ik daar ook veel terugkomen anno 2017, maar het kan zoveel beter.

Wellicht kun je dan beter een framework overwegen ipv functioneel te gaan programmeren. Ik kan je nu al vertellen dat je met funcioneel programmeer werk niet zo heel ver zal komen, omdat men vooral kennis zoekt met PHP icm OOP en PHP icm frameworks, zoals Zend Framework, Symfony of Laravel.

Ook het formulier is best bewerkelijk. Wat nu als er een nieuwe gebiedsmanager erbij komt of er gaat een gebiedsmanager weg, ga jij dan elke keer het formulier aanpassen? ;) Ik zou dus een beheer gedeelte maken, waarin gebiedsmanagers toegevoegd en verwijderd kunnen worden, bijvoorbeeld. En vervolgens dus het formulier dusdanig maken, dat het de benodigde info ook uit de database kan halen. ;)

[ Voor 63% gewijzigd door CH4OS op 29-08-2017 13:23 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 12:55

MAX3400

XBL: OctagonQontrol

Rollback naar je vorige PHP-versie en klaar?

Volgens mij is er gewoon iets omgevallen (permissie-wijs of object-wise) want de troubleshooter voor de mysqli_error geldt zowel voor 5.x als .7x: http://www.php.net/manual/en/mysqli.error.php

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • 0 Henk 'm!

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 13:58

pistole

Frutter

Ik zou eerst de code eens bekijken, en de gebruikte syntaxis in je script vergelijken met de documentatie van de gebruikte functies...

Ik frut, dus ik epibreer


Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Nu online
Ik werk verder niet met PHP, maar na 2 seconden googlen zie ik aanwijzingen dat die methodes de connectie als argument willen hebben. Is dat het niet gewoon?

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Ik vind het eigenlijk wat vreemd dat men zonder alles grondig te testen en zonder jou als ontwikkelaar is gaan upgraden naar een nieuwe PHP-versie. Eerlijk gezegd vind ik dat alleen al best amateuristisch.

Ook kun je voor de genoemde functies prima de documentatite opvragen bij php.net, je kan dus zo zien wat er aan de code schort, wij zijn geen helpdesk wat dat betreft.

Als ik je een tip mag geven, ga over naar prepared statements en gebruik daarvoor een PDO-library, dan hoef je een boel code later niet nog eens te herschrijven én voorkom je SQL-injection. :)

PHP:
1
$connection = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE) or die("Error " . mysqli_error());
Het direct stoppen van het script, omdat er geen database connectie is, is ook erg lelijk en kan vele malen beter. Beter doe je vooraf je connectie maken voordat je überhaupt iets aan content verstuurt naar de client. Neem daarom ook dingen die staan op Stackoverflow daarom ook niet zomaar aan. Ja, het zal ongetwijfeld kunnen werken, maar hoeft niet altijd de beste oplossing te zijn voor zaken, dit zie ik daar ook veel terugkomen anno 2017, maar het kan zoveel beter.

Wellicht kun je dan beter een framework overwegen ipv functioneel te gaan programmeren. Ik kan je nu al vertellen dat je met funcioneel programmeer werk niet zo heel ver zal komen, omdat men vooral kennis zoekt met PHP icm OOP en PHP icm frameworks, zoals Zend Framework, Symfony of Laravel.

Ook het formulier is best bewerkelijk. Wat nu als er een nieuwe gebiedsmanager erbij komt of er gaat een gebiedsmanager weg, ga jij dan elke keer het formulier aanpassen? ;) Ik zou dus een beheer gedeelte maken, waarin gebiedsmanagers toegevoegd en verwijderd kunnen worden, bijvoorbeeld. En vervolgens dus het formulier dusdanig maken, dat het de benodigde info ook uit de database kan halen. ;)

[ Voor 63% gewijzigd door CH4OS op 29-08-2017 13:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Toch bedankt nog. ik zal kijken wat ik kan doen maar ik ben maar een stagaire ;-; xD

Acties:
  • 0 Henk 'm!

  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

De fouten hadden ook al bij PHP 5.x voor moeten komen maar kwamen toen waarschijnlijk niet tot uiting omdat je gewoon een connectie had met de database.

Gebruik overigens bij je connectie mysqli_connect_error() ipv mysqli_error()

Acties:
  • 0 Henk 'm!

  • MaartenBW
  • Registratie: Mei 2015
  • Laatst online: 27-08 07:28
Waarom maak je op regel 33 een mysqli object aan, maar ga je vervolgens procedureel verder en gebruik je het aangemaakte object niet meer?

Acties:
  • 0 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 12:55

MAX3400

XBL: OctagonQontrol

Verwijderd schreef op dinsdag 29 augustus 2017 @ 12:58:
Toch bedankt nog. ik zal kijken wat ik kan doen maar ik ben maar een stagaire ;-; xD
En dus? Dan spreek je degene aan die de change naar 7.x heeft goedgekeurd, escaleert het verhaal via ITIL naar de stakeholders en klaar?

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • +1 Henk 'm!

  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
MAX3400 schreef op dinsdag 29 augustus 2017 @ 13:11:
[...]

En dus? Dan spreek je degene aan die de change naar 7.x heeft goedgekeurd, escaleert het verhaal via ITIL naar de stakeholders en klaar?
Hoewel ik het eens ben dat deze topic hier niet thuishoort, vind ik dat wel iets te kort door de bocht geformuleerd. Sec gezien is dat natuurlijk wat er moet gebeuren, maar we zijn allemaal een keer stagiair geweest en je weet dan simpelweg gewoon niet alles over het reilen en zeilen van een supportorganisatie. En ik heb zelden een stagiair gezien die gaat escaleren :)

Ik zou gewoon even naar de stagebegeleider gaan en het vanaf daar verder oppakken.

[ Voor 6% gewijzigd door Laurens-R op 29-08-2017 13:21 ]


Acties:
  • +2 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Nu online
MAX3400 schreef op dinsdag 29 augustus 2017 @ 13:11:
[...]

En dus? Dan spreek je degene aan die de change naar 7.x heeft goedgekeurd, escaleert het verhaal via ITIL naar de stakeholders en klaar?
Hij is stagiair, in zijn vakantie is iets geüpgraded en niemand kon het toen fiksen

Iets doet me denken dat dat bedrijf het woord stakeholder niet kent en ITIL niet eens kan spellen

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 22:43
MAX3400 schreef op dinsdag 29 augustus 2017 @ 13:11:
En dus? Dan spreek je degene aan die de change naar 7.x heeft goedgekeurd, escaleert het verhaal via ITIL naar de stakeholders en klaar?
Hahaha, projectie much? Voor hetzelfde geld loopt hij stage bij een eenmansbedrijf.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
farlane schreef op dinsdag 29 augustus 2017 @ 13:48:
Hahaha, projectie much? Voor hetzelfde geld loopt hij stage bij een eenmansbedrijf.
Het heeft kennelijk heel de zomervakantie eruit gelegen dus enorm veel prio heeft 't ook niet.

https://niels.nu


Acties:
  • +1 Henk 'm!

Verwijderd

Volgens mij is gewoon de connectie kapot, is er wel verbinding met de database. Indien je php upgrade is het ook een mooi momentje om je credentials te wijzigen. Oftewel check dat eerst
Pagina: 1