phpscript geen toegang, console wel tot MySQL
Maak ik echter toegang via de console dan krijg ik wel toegang met root, maar niet met een user die ik heb aangemaakt.
De output van het PHP script is Unable to connect to database[MySQL server has gone away]
En de hostnaam staat op localhost? Kun je de configurstie behalve password eens laten zien?
Ik wil eerst nog even het volgende linkje delen http://codular.com/php-mysqli
ik heb de code uit deze zwarte vakken overgenomen en aangepast aan mijn database en tabellen, tot en met output query results
Is het niet zo dat je na je $db->close(); nog wat uit probeert te voeren?
Script:
Code (php)
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
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
<?php
$db = new mysqli('localhost:8080, user, password, databasenaam');
if ($db->connect_errno > 0){
die('Unable to connect to database[' . $db->connect_error . ']');
}
$sql = <<<SQL
SELECT *
FROM 'tabel-naam'
SQL;
if(!$result = $db->query($sql)){
die('There was an error running the query[' . $db->error . ']');
}
while($row = $result->fetch_assoc()){
echo $row['Naam'] . '<br />';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>verbindt met database</title>
</head>
<body>
</body>
</html>
$db = new mysqli('localhost:8080, user, password, databasenaam');
if ($db->connect_errno > 0){
die('Unable to connect to database[' . $db->connect_error . ']');
}
$sql = <<<SQL
SELECT *
FROM 'tabel-naam'
SQL;
if(!$result = $db->query($sql)){
die('There was an error running the query[' . $db->error . ']');
}
while($row = $result->fetch_assoc()){
echo $row['Naam'] . '<br />';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>verbindt met database</title>
</head>
<body>
</body>
</html>
.............................
Toevoeging op 30/01/2015 12:08:49:
Frank Nietbelangrijk op 30/01/2015 11:43:10:
En de hostnaam staat op localhost? Kun je de configurstie behalve password eens laten zien?
Ik begrijp je vraag niet helemaal, de hostnaam is toch localhost?
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 30/01/2015 12:09:31 door - Ariën -
Haal die :8080 eens weg. Op die poort draait MySQL normaliter ook niet.
op poort 80 draait bij mij IIS. Ik heb de conf aangepast en ServerName localhost op 8080 gezet.
- Aar - op 30/01/2015 13:30:29:
Dat werkt dus niet.
Of moet zijn dat je database 'database' heet, je user 'user', enz..
Maar omdat je in je originele post zegt dat je met user via de console geen toegang kreeg, zou ik de rechten (o.a. op SQL en op de database) ook maar eens nakijken.
Gewijzigd op 30/01/2015 13:52:29 door Jan de Laet
Ik neem aan dat het PHP script op dezelfde machine draait als de mysql server? de mysql server draait standaard op poort 3306. maar Feitelijk hoef je die dan niet op te geven. Is het een eigen linux bakkie? zit de firewall soms de boel tegen te houden? Dat kun je simpel testen door deze tijdelijk uit te schakelen. Welke linux versie is het?
Daarnaast zullen er een aantal zaken uitgesloten moeten worden zoals Frank hierboven al aanhaalt, m.a.w. staan database-server en webserver op dezelfde machine zodat je ook inderdaad via localhost kunt connecten. En wanneer deze twee zaken op verschillende machines staan, accepteert de machine waarop je database-server staat en de database-server zelf connecties van de andere bak?
Je root account werkt, zeg je. Heb je al eens geprobeerd die gegevens in te vullen om een connectie te maken? Bij wijze van test, uiteraard. Je wilt niet permanent via een root account verbonden zijn. EDIT: als dit laatste werkt, weet je in ieder geval dat er geen obstructies zijn tussen "code" en "database".
Gewijzigd op 30/01/2015 14:37:55 door Thomas van den Heuvel
Wat denken jullie van het script inhoudelijk? Zitten er fouten in?
* FLUSH PRIVLEGES zou ervoor kunnen zorgen dat de credentials van je nieuwe user/database actief worden.
* probeer anders een connectie te maken met je root-gegevens bij wijze van test
Draait je MySQL-proces (service) uberhaupt wel?
Ik ben geïnteresseerd in de werking van het script. Klopt deze? Of zitten er fouten in?
De WHILE loop van regel 17-22 zou beter binnen de html staan, bijv regel 31.
Jan de Laet op 30/01/2015 18:55:37:
De WHILE loop van regel 17-22 zou beter binnen de html staan, bijv regel 31.
Geen qoutes gebruiken om tabel- en kolomnamen. Doe gewoon:
Tevens valt het mij op dat je hoofdletters gebruikt in je kolomnamen. Niet verboden maar mijn advies is hou het makkelijk voor je zelf en hou tabel- en kolomnamen in uitsluitend kleine letters
- je stelt geen character encoding in in het document, ook geef je die niet mee in PHP
Gebruik header('Content-type: text/html; charset=UTF-8'); als je UTF-8 gebruikt
of zet een meta-tag in je HTML-document (nog voor je title of andere info)
- je stelt geen character encoding in bij het maken van een connectie met je database
dit is een 'recipe for disaster' als je dit later repareert, maar al een heleboel data (op de verkeerde manier) naar je database hebt weggeschreven
- je escaped output (tekst die je afdrukt) niet met bijvoorbeeld htmlspecialchars() <-- deze functie heeft ook weer een character encoding nodig
dit kan mogelijk tot gevolg hebben dat user-data de HTML-opbouw van je pagina breekt of JavaScript uitvoert omdat die content niet van haar speciale betekenis ontdaan is
Ik heb via andere scripts uiteindelijk connectie met de dbase en een query kunnen doen.
Opgelost en topic kan wat mij betreft gesloten.