hallo ben overgestapt van wamp 2,5 naar 3,06 en daar zit in Apache/2.4.27 (Win64) PHP/5.6.31
nu gebruik ik het zelfde php scrip en krijg een error
1 0.0005 243840 {main}( ) ...\test.php:0
2 0.0017 245136 mysqli_connect ( ) ...\test.php:16
Could not connect:
nu zie ik wel dat mysql_connect ( ) is mysqli_connect ( ) geworden.
maar wat er met {main} moet gebeuren weet ik niet
dit is mijn test code wie kan me op weg helpen
Als je localhost gebruikt pak dan even een phpinfo() pagina en kijk of:
mysqli.default_socket en pdo_mysql.default_socket misschien niet leeg zijn.
Deze moet je namelijk dan invullen.
Als je mysql een verbinding met localhost laat opzetten dan gebruikt hij dus een socket.
"When using localhost as the destination in a client connector interface of an application, the MySQL application programming interface connects to the database using a Unix domain socket, while a TCP connection via the loopback address requires the direct use of the explicit address."
ik heb me probleem gevonden en heb de links naar de andere server uit kunnen zetten. en nu staat mysql weer op poort 3306
maar omdat ik nu veel in het script hem moeten aanpassen naar mysqli_connect en zo heb ik nog niet kunnen vinden hoe ik naar de database terug kan schrijven nu heb ik nog
include('counter/db.php');
$site = "een website";
$keuze = "site";
$link = mysqli_connect($host, $dbnaam, $dbww, $db_name);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$sql= mysqli_query($link,"SELECT ".$keuze.", COUNT(".$keuze.") FROM counter WHERE site='".$site."' GROUP BY ".$keuze."" ) ;
while ( $rij = mysqli_fetch_array( $sql ) ) {
echo "Bezoeker </br>".$rij['COUNT('.$keuze.')'];
}
@Ronald In zekere zin bega je opnieuw eenzelfde fout.
Voorheen stond er overal in je scripts:
appelVla($a, $b);
Nu appelVla() is komen te vervallen vervang je alle voorkomens door:
perenVla($b, $a);
Maar wat als dit nu opnieuw verandert?
Wat nu als je perenVla($b, $a) vervangt door mijnVla($a, $b) en je deze functie als volgt definieert:
function mijnVla($a, $b) {
perenVla($b, $a);
}
En vervolgens dus overal mijnVla($a, $b) gebruikt, en blijft gebruiken.
Dan, wanneer er iets in toetjesland verandert, hoef je (in een ideale situatie) slechts één regel code aan te passen in plaats van (opnieuw) alle voorkomens van je vla-functies te veranderen / te zoeken en te vervangen.
Concreet: het is onverstandig om functies die op een database opereren op deze manier te hardcorden (rechtstreeks mysqli-functies en -methoden gebruiken). Het alternatief wat ik voorstel dekt natuurlijk niet alles maar als je een implementatie van een bepaalde functionaliteit wilt wijzigen dan hoef je dat op de bovenstaande wijze maar op één plaats te doen omdat je indirect -via meer van dit soort functies- met je database communiceert.
Ook kun je deze over tijd inhoudelijk wijzigen met behoud van de werking, maar ook uitbreiden naar aanleiding van ontwikkelingen in PHP-land en eigen voortschrijdend inzicht.
Je zou zelfs kunnen overwegen om bepaalde operaties te bundelen, maar daarmee moet je wel een beetje voorzichtig zijn uiteraard.
Wat je uit dit bovenstaande geratel moet meenemen is het volgende: iets wat je hard in code hebt vastgelegd is veranderd. Dit kost je nu veel werk om aan te passen. Bega niet opnieuw dezelfde fout maar wees slim(mer) in je aanpak.