MySQL connect werkt niet sinds PHP update
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)
1
2
2
mysql_connect($host,$user,$pass) or die(mysql_connect_error());
mysql_select_db($data) or die(mysql_connect_error());
mysql_select_db($data) or die(mysql_connect_error());
en heb dit aangepast naar:
Code (php)
1
2
2
mysqli_connect($host,$user,$pass) or die(mysqli_connect_error());
mysqli_select_db($data) 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
Code (php)
1
2
3
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));
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
https://vevida.com/help/converteer-php-mysql-naar-mysqli-voor-het-te-laat-is/
Kijk eens naar: Gewijzigd op 14/12/2018 22:09:28 door Aad B
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 -
Aad B op 14/12/2018 22:09:06:
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
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):
(en dus ook voor al je andere mysql aanroepen)
Code (php)
1
2
3
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));
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)
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 ();
}
?>
// /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
Gewijzigd op 15/12/2018 14:43:26 door - Ariën -
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)
1
2
3
4
5
6
7
8
9
10
11
12
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);
?>
<? } // 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)
1
2
3
4
5
6
7
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);
?>
<?
$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
En zoek meteen eens op "SQL injectie".