MySQL connect werkt niet sinds PHP update

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Web Ontwikkelaar PHP, Nijmegen

Contactpersoon Roel Kavelaar rkavelaarATsearch-consult.nl 0243528815 0644949337 Organisatie Jong, gezond en sterk groeiende bedrijf dat webbased multimedia oplossingen bouwt in de omgeving Nijmegen. Het bedrijf bouwt voor klanten o.a. geavanceerde websites, webwinkels, webapplicaties en specifieke webbased software. Het bedrijf ontwikkelt en onderhoudt ook verschillende bekende Nederlandse websites. Op dit moment hebben zij een groeiende en brede klantenkring opgebouwd. Met betrekking tot programmeer-, onderhoud-, ontwerp-werkzaamheden wordt een PHP ontwikkelaar gezocht met kennis van contentmanagementsysteemen en frameworks. Locatie Nijmegen Verantwoordelijkheden (Her)Ontwerpen en (her)ontwikkelen in PHP ten behoeve van websites voor klanten, project klussen, onderhoud en specifieke klantwensen (Her)Ontwerpen en (her)ontwikkelen in PHP, PHP

Bekijk vacature »

Keven Vanovertveldt

Keven Vanovertveldt

14/12/2018 21:44:47
Quote Anchor link
Hallo,

Sinds de update van PHP v.4.2 naar v.7.1 op de servers van ONE.com heb ik problemen met MySQL connect.
Ik geraak niet meer in mijn database en heb errors op 2-3 pagina's.

in config.php had ik dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
mysql_connect($host,$user,$pass) or die(mysql_connect_error());
mysql_select_db($data) or die(mysql_connect_error());


en heb dit aangepast naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
mysqli_connect($host,$user,$pass) or die(mysqli_connect_error());
mysqli_select_db($data) or die(mysqli_connect_error());


Zou dit dan niet moeten werken?


Alvast bedankt.
Mvg.
Gewijzigd op 14/12/2018 21:48:23 door Keven Vanovertveldt
 
PHP hulp

PHP hulp

19/06/2019 18:09:16
 
Rob Doemaarwat

Rob Doemaarwat

14/12/2018 22:08:26
Quote Anchor link
Bij mysqli moet je (bijna) altijd de connectie expliciet meegeven als eerste parameter. Dus het wordt (en meteen die connect error alleen na de connect):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$link = mysqli_connect($host,$user,$pass) or die(mysqli_connect_error());
if(!$link) die(mysqli_connect_error());
mysqli_select_db($link,$data) or die(mysqli_error($link));

(en dus ook voor al je andere mysql aanroepen)
Gewijzigd op 14/12/2018 22:10:25 door Rob Doemaarwat
 
Aad B

Aad B

14/12/2018 22:09:06
Quote Anchor link
Kijk eens naar: https://vevida.com/help/converteer-php-mysql-naar-mysqli-voor-het-te-laat-is/
Gewijzigd op 14/12/2018 22:09:28 door Aad B
 
- Ariën -
Beheerder

- Ariën -

15/12/2018 00:55:55
Quote Anchor link
Wacht even....
Een upgrade van PHP 4.2(!!!!) naar 7.x?
Serieus?

Dat gaat wel veel verder dan enkel mysql-functies ombouwen naar mysqli.

PHP 4.2 stamt uit 2002!!!!
Ik hoop toch echt dat je PHP 5.2 bedoelt.
Gewijzigd op 15/12/2018 00:56:56 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

15/12/2018 12:39:42
Quote Anchor link


Het advies wat daar gegeven wordt om met een aardappelstempel maar alles in elk PHP-bestand aan te passen naar de nieuwe variant lijkt mij geen goed plan. Maak er dan op zijn minst één include van zodat je één bron hebt voor je connectie. Wat als straks de connectie-parameters of andere zaken veranderen? Kun je dezelfde truuk opnieuw gaan uitvoeren.

En dan hebben we het nog niet gehad over alle aanroepen van mysql_query() en aanverwante functies zelf. Nu wordt dat dan vertaald naar mysqli_query(). En straks naar weer iets anders. Als je hier nu eens een tussenlaag in aanbrengt voor communicatie met je MySQL-database (dit wordt ook wel een Data Access Abstraction Layer (DAAL) genoemd) zodat er een zekere abstractie is van een hard coded aanroep. Als er dan straks weer iets verandert in MySQL-land dan hoef je enkel de implementatie van de tussenlaag aan te passen, en niet alle hard coded instanties van mysqli-functies of -methoden. Hiervoor zou je PDO kunnen gebruiken, maar hierbij moet je je wel realiseren dat PDO niet geschreven is voor, noch geoptimaliseerd is voor gebruikmaking van MySQL. Als je toch enkel een MySQL-database gebruikt kun je dus beter een DAAL maken voor MySQLi.

Maar misschien moet men hier eerst maar eens tegenaan lopen voordat de realisatie echt inzinkt dat een andere strategie wellicht beter was geweest.

Uiteraard is dit voor een eerste conversie (alles rechtstreeks van mysql_ naar mysqli_) prima, maar vervolgens vallen er al snel meer lijken uit de kast want vaak is de rest van de code ook (hopeloos) gedateerd. Dit is dus eigenlijk een goed moment om *alle* code eens goed onder handen te nemen en te kijken wat er verbeterd kan worden aan structuur en ook vooral aan veiligheid.
Gewijzigd op 15/12/2018 12:40:17 door Thomas van den Heuvel
 
Keven Vanovertveldt

Keven Vanovertveldt

15/12/2018 13:15:44
Quote Anchor link
Rob Doemaarwat op 14/12/2018 22:08:26:
Bij mysqli moet je (bijna) altijd de connectie expliciet meegeven als eerste parameter. Dus het wordt (en meteen die connect error alleen na de connect):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$link = mysqli_connect($host,$user,$pass) or die(mysqli_connect_error());
if(!$link) die(mysqli_connect_error());
mysqli_select_db($link,$data) or die(mysqli_error($link));

(en dus ook voor al je andere mysql aanroepen)



Dank voor alle tips!

Ik heb de mysqli overal aangepast, het lijkt alsof dit nu ok is, maar zoals Thomas zei, krijg ik nu een query error dat van een andere include pagina komt: (chk_ban.php):
http://dscwindowtinting.be/index2.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: mysqli_query() expects at least 2 parameters, 1 given in /customers/3/1/3/dscwindowtinting.be/httpd.www/includes/chk_ban.php on line 9 Warning: mysqli_error() expects exactly 1 parameter, 0 given in /customers/3/1/3/dscwindowtinting.be/httpd.www/includes/chk_ban.php on line 9 FOUT IN DE QUERY:


chk_ban.php
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
<?php
// /includes/chk_ban.php

include ("config.php");

$ipadres=$_SERVER['REMOTE_ADDR'];
//query opbouwen
$query="SELECT * FROM ipban WHERE ipadres='" .$ipadres ."'";
$result=mysqli_query($query) or die ("FOUT IN DE QUERY: " . mysqli_error());

//als het ipadres van de bezoeker is gevonden in de ipbanlijst dan
//doorsturen naar een zelf te kiezen pagina

$aantal = mysqli_num_rows($result);
if ($aantal >= 1){
   header("Location: http://dscwindowtinting.be/verbannen");
   die ();
}

?>
Gewijzigd op 15/12/2018 13:19:16 door Keven Vanovertveldt
 
Adoptive Solution

Adoptive Solution

15/12/2018 14:35:39
Quote Anchor link
Probeer eens uit te leggen waarom je weigert in de handleiding te kijken.

http://php.net/manual/en/mysqli.query.php
 
- Ariën -
Beheerder

- Ariën -

15/12/2018 14:42:12
Quote Anchor link
Je mist de connectie-parameter in je query. Idem dito in je mysqli_error(...)
Gewijzigd op 15/12/2018 14:43:26 door - Ariën -
 
Keven Vanovertveldt

Keven Vanovertveldt

17/12/2018 22:10:30
Quote Anchor link
Dit heb ik helemaal gelezen, mijn script aangepast,
en het werkt!

Maar op de andere site heb ik nog steeds 1 pagina dat ambetant doet.
2 errors die ik niet meteen opgelost krijg.

In lijn 11 hier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
//Warning: mysqli_query() expects at least 2 parameters, 1 given in /customers/4/3/5/t-s.be/httpd.www/gallery.php on line 206

<? } // end of more()

function overview() {
$categorie = $_GET["cat"];
if ($categorie == "") {
    $categorie = 1;
}

$query = "select * from car where categorie = '".$categorie."' order by id desc";
$res = mysqli_query($query);
?>


En hier in lijn 5:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
//Error: Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /customers/4/3/5/t-s.be/httpd.www/gallery.php on line 255

<?
$teller
= 0;
while ($teller < mysqli_num_rows($res)){
$row = mysqli_fetch_array($res, MYSQL_BOTH);     
?>


Heb al het een en het ander geprobeerd, zonder succes.
iemand een idee?
Gewijzigd op 17/12/2018 22:14:59 door Keven Vanovertveldt
 
Rob Doemaarwat

Rob Doemaarwat

17/12/2018 22:15:21
Quote Anchor link
Voor het antwoord raad ik je aan om alles nog eens te lezen.
En zoek meteen eens op "SQL injectie".
 
- Ariën -
Beheerder

- Ariën -

17/12/2018 22:17:25
 



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.