Server op localhost werkt niet zoals het moet...
Ik testte vroeger altijd mijn php's rechtstreeks op een domein dat ik beheer,
maar omdat altijd die files uploaden een beetje omslachtig is,
heb ik eens een server opgezet om het local te kunnen testen.
Ik heb dus xampp van Apache Friends gedownload en geïnstalleerd,
en alle bestanden in de correcte folder geplaatst.
Als ik nu een eenvoudig script test, dan werkt dit zoals het hoort (bv http://localhost/index.php)
Echter, wanneer er database aan te pas komt (bv. bij sign up) dan krijg ik errors.
Ik heb de database correct geïnstalleerd en de MySql is "running".
Ik heb alle tables die ik gebruik in het script correct toegevoegd.
Meer bepaald krijg ik deze errors:
Quote:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\sign_up.php on line 44
Op lijn 44 staat er dit:
Quote:
$dn = mysql_num_rows(mysql_query('select id from mytable where user="'.$username.'"'));
(testen of de username nog niet bestaat)
Mijn config ziet er zo uit:
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
session_start();
mysql_connect('localhost', 'myusersname', 'mypass');
mysql_select_db('mydb');
$mail_webmaster = '[email protected]';
$url_root = 'http://localhost/';
?>
session_start();
mysql_connect('localhost', 'myusersname', 'mypass');
mysql_select_db('mydb');
$mail_webmaster = '[email protected]';
$url_root = 'http://localhost/';
?>
Wanneer ik de user of pass verander in de config, krijg ik hele reeks errors, dus dat is correct ingevuld. Wanneer ik echter "mydb" verander in config.php in iets willekeurigs, dan verandert er niks. De error blijft dezelfde, en er komen geen extra errors bij... het lijkt wel of hij mijn table niet vindt ofzo...?
Ik heb het script ook online getest, op een domein dat ik beheer, alle tables etc. ook overgenomen, met dezelfde variabelen, en daar werkt alles perfect... geen errors.
Iemand die mij kan helpen?
Gewijzigd op 24/01/2011 16:36:02 door Sure Is
ligt er natuurlijk aan of de query gelukt is of niet,
dit zal waarscheinlijk wel werken:
Code (php)
1
2
3
4
2
3
4
<?php
$user = mysql_query('select id from mytable where user="'.$username.'"');
$dn = mysql_num_rows($user);
?>
$user = mysql_query('select id from mytable where user="'.$username.'"');
$dn = mysql_num_rows($user);
?>
ik weet niet waarom het wel werkt op je domein, maar niet op je localhost,
maar zo kun je het iig oplossen.
Gewijzigd op 24/01/2011 16:41:00 door Thomas van den Bulk
Dat is vreemd. Ik zou verwachten dat je daar een database selecteert; niet een tabel.
Of heb jij een database 'mytable' genoemd?
Kris Peeters op 24/01/2011 16:40:17:
mysql_select_db('mytable');
Dat is vreemd. Ik zou verwachten dat je daar een database selecteert; niet een tabel.
Of heb jij een database 'mytable' genoemd?
Dat is vreemd. Ik zou verwachten dat je daar een database selecteert; niet een tabel.
Of heb jij een database 'mytable' genoemd?
Sorry, dat was een schrijffoutje, het is inmiddels aangepast :)
Toevoeging op 24/01/2011 16:48:06:
@ Thomas: jouw code geeft helaas dezelfde error voor de lijn waar "$dn = mysql_num_rows($user);" staat...
Thomas van den Bulk op 24/01/2011 16:39:05:
waneer je een mysql_query uitvoerd, zal hij true of false geven,
mysql_query geeft geen true weer.
mysql_query geeft je een resource terug, waar je informatie uit kan halen met iets als mysql_fetch_assoc.
mysql_query geeft een false weer wanneer iets fouts gebeurt.
Je gebruikt velden die niet in de tabel staan of je hebt een een slechte database verbinding gemaakt of zo.
Controleer eens bij de andere mysql functies of ergens een fout wordt gegeven.
bv. mysql_select_db (http://be.php.net/mysql_select_db) kan je ook in een if zetten. Je ziet in de documentatie dat de functie een true of false terug geeft
if (mysql_select_db('myDb')) {
...
Gewijzigd op 24/01/2011 16:55:58 door Kris Peeters
Ook voor login hetzelfde probleem:
"Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\connexion.php on line 46"
Source code:
45: $req = mysql_query('select password, id FROM users WHERE user="'.$username.'"');
46: $dn = mysql_fetch_array($req);
Toevoeging op 24/01/2011 16:53:02:
Kris Peeters op 24/01/2011 16:50:15:
mysql_query geeft een false weer wanneer iets fouts gebeurt.
Je gebruikt velden die niet in de tabel staan of je hebt een een slechte database verbinding gemaakt of zo.
Je gebruikt velden die niet in de tabel staan of je hebt een een slechte database verbinding gemaakt of zo.
Inderdaad, en dat is het 'm nu juist: ik gebruik geen velden die niet in de table staan, en mijn database verbinding is ook correct.
Online, met dezelfde tables, werkt alles perfect...
Gewijzigd op 24/01/2011 16:51:24 door Sure Is
(Zie mijn vorige post die ik aangepast heb, net te laat)
Ik heb het probleem opgelost.
Even mijn oplossing voor wanneer er ooit nog eens mensen dit probleem hebben:
Blijkbaar krijgen zelf toegevoegde users van de MySQL slechts "usage privileges".
De standaard gebruiker "root" heeft "all privileges".
Config.php upgedate naar:
"mysql_connect('localhost', 'root', '');
mysql_select_db('mydb');"
Alles werkt nu as it should.
Wanneer ik alles online smijt zal ik die root en paswoord dan wel nog manueel even aanpassen in de cofig-file.
Toch bedankt van de response!
Grtz.
Gewijzigd op 24/01/2011 17:00:40 door Sure Is