foutmelding mysql_num_rows
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/sysadmin/WWW/register.php on line 13
No database selected
Hoe kan ik dit oplossen?
Door wat relevante code te geven?
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
34
35
36
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
34
35
36
<?php
session_start();
include "config.php";
if($_POST['register']) {
if($_POST['naam']) {
if($_POST['ww1']) {
if($_POST['ww2']) {
if($_POST['ww2'] == $_POST['ww1']) {
$check_query = mysql_query("SELECT * FROM login WHERE naam = '" .$_POST['naam']. "'");
$check = mysql_num_rows($check_query);
if($check == "0"){
$ww = md5($_POST['ww1']);
mysql_query("INSERT INTO login (naam, ww)
VALUES ('".$_POST['naam']."', '".$ww."')") or die(mysql_error());
$melding = "Je bent geregistreerd en kunt <a href='index.php'>hier</a> inloggen";
}else{//#1 naam bestaat al
$melding = "De door jou gekozen naam is al geregistreerd";
}//#1 afsluiten
}else{//#2 ww's niet het zelfde
$melding = "De door jou gekozen wachtwoorden zijn niet het zelfde";
}//#2 afsluiten
}else{//#3 wachtwoord 2 niet ingevuld
$melding = "Je moet wel een wachtwoord invullen";
}//#3 afsluiten
}else{//#4 ww 1 niet ingevuld
$melding = "Je moet wel een wachtwoord invullen";
}//#4 afsluiten
}else{//#5 geen naam
$melding = "Je moet wel een naam invullen";
}//#5 afsluiten
}//post register afsluiten
?>
session_start();
include "config.php";
if($_POST['register']) {
if($_POST['naam']) {
if($_POST['ww1']) {
if($_POST['ww2']) {
if($_POST['ww2'] == $_POST['ww1']) {
$check_query = mysql_query("SELECT * FROM login WHERE naam = '" .$_POST['naam']. "'");
$check = mysql_num_rows($check_query);
if($check == "0"){
$ww = md5($_POST['ww1']);
mysql_query("INSERT INTO login (naam, ww)
VALUES ('".$_POST['naam']."', '".$ww."')") or die(mysql_error());
$melding = "Je bent geregistreerd en kunt <a href='index.php'>hier</a> inloggen";
}else{//#1 naam bestaat al
$melding = "De door jou gekozen naam is al geregistreerd";
}//#1 afsluiten
}else{//#2 ww's niet het zelfde
$melding = "De door jou gekozen wachtwoorden zijn niet het zelfde";
}//#2 afsluiten
}else{//#3 wachtwoord 2 niet ingevuld
$melding = "Je moet wel een wachtwoord invullen";
}//#3 afsluiten
}else{//#4 ww 1 niet ingevuld
$melding = "Je moet wel een wachtwoord invullen";
}//#4 afsluiten
}else{//#5 geen naam
$melding = "Je moet wel een naam invullen";
}//#5 afsluiten
}//post register afsluiten
?>
Jonas Keppens op 18/06/2012 20:54:32:
ik krijg altijd deze foutmelding :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/sysadmin/WWW/register.php on line 13
No database selected
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/sysadmin/WWW/register.php on line 13
No database selected
Het laatste stukje van de foutmelding lijkt me nogal duidelijk. Je hebt geen database geselecteerd, dus misschien moet je dat wel eens doen.
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
Script is lek. Zie eens sql-injection.
Gewijzigd op 18/06/2012 22:00:29 door - SanThe -
Toevoeging op 18/06/2012 22:05:00:
het is dit script dat ik uitprobeer:
http://www.phphulp.nl/php/script/overig/php-chatbox-met-ajax/1152/phpchatboxmetajax/853/
Jonas Keppens op 18/06/2012 22:03:32:
ik heb er wel 1 geselecteerd en deze bestaat ook
Blijkbaar niet, want mysql/php geeft die foutmelding niet voor jan met de korte achternaam.
hoe kan ik deze dan selecteren?
met mysql_connect(); en mysql_select_db();
daar had ik ook een fout met username en password maar dit is opgelost
en toen zei die altijd verbinding mislukt maar dit komt er niet meer op
dus veronderstel ik dat hij wel verbinding kan maken
dit is het config.php bestand
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
//Instellingen van de MySQL en database
$dbhost = 'localhost'; //Naam van je server
$dbname = 'MyISAM'; //Naam van je database
$dbuser = ini_get("mysql.default_user"); //Naam van de gebruiker
$dbpassword = ini_get("mysql.default_password"); //Wachtwoord gebruiker
//Verbinding maken met de database
$db = mysql_connect("$dbhost", "$dbuser", "$dbpassword")
or die ("Verbinding mislukt");
mysql_select_db("$dbname", $db);
$datum=date("j M Y"); //datum bepalen, type: 01 Sep 2004
//Sleutels en Waarden voor de vervanging bepalen in een array
$maand['Jan']="januari"; //engelse maand met hoofdletter, nederlandse niet
$maand['Feb']="februari";
$maand['Mar']="maart";
$maand['Apr']="april";
$maand['May']="mei";
$maand['Jun']="juni";
$maand['Jul']="juli";
$maand['Aug']="augustus";
$maand['Sep']="september";
$maand['Oct']="oktober";
$maand['Nov']="november";
$maand['Dec']="december";
foreach($maand as $k=>$v){
$datum=str_replace($k, $v, $datum);
};
function code() {
$tekens = 'AbCDeFgHiJklmNoPQrStUvWXyZ1234567890';
$code = '';
for ($i=0; $i<6; $i++)
{
$code .= $tekens {rand (0, strlen ($tekens) - 1)};
}
$rand = rand(1,4);
if($rand == 1) {
$code = sha1(md5(sha1(md5($code))));
}elseif($rand == 2) {
$code = md5(sha1(md5(sha1($code))));
}elseif($rand == 3) {
$code = md5(md5(sha1(sha1($code))));
}elseif($rand == 4) {
$code = sha1(sha1(md5(md5($code))));
}
return $code;
}
?>
//Instellingen van de MySQL en database
$dbhost = 'localhost'; //Naam van je server
$dbname = 'MyISAM'; //Naam van je database
$dbuser = ini_get("mysql.default_user"); //Naam van de gebruiker
$dbpassword = ini_get("mysql.default_password"); //Wachtwoord gebruiker
//Verbinding maken met de database
$db = mysql_connect("$dbhost", "$dbuser", "$dbpassword")
or die ("Verbinding mislukt");
mysql_select_db("$dbname", $db);
$datum=date("j M Y"); //datum bepalen, type: 01 Sep 2004
//Sleutels en Waarden voor de vervanging bepalen in een array
$maand['Jan']="januari"; //engelse maand met hoofdletter, nederlandse niet
$maand['Feb']="februari";
$maand['Mar']="maart";
$maand['Apr']="april";
$maand['May']="mei";
$maand['Jun']="juni";
$maand['Jul']="juli";
$maand['Aug']="augustus";
$maand['Sep']="september";
$maand['Oct']="oktober";
$maand['Nov']="november";
$maand['Dec']="december";
foreach($maand as $k=>$v){
$datum=str_replace($k, $v, $datum);
};
function code() {
$tekens = 'AbCDeFgHiJklmNoPQrStUvWXyZ1234567890';
$code = '';
for ($i=0; $i<6; $i++)
{
$code .= $tekens {rand (0, strlen ($tekens) - 1)};
}
$rand = rand(1,4);
if($rand == 1) {
$code = sha1(md5(sha1(md5($code))));
}elseif($rand == 2) {
$code = md5(sha1(md5(sha1($code))));
}elseif($rand == 3) {
$code = md5(md5(sha1(sha1($code))));
}elseif($rand == 4) {
$code = sha1(sha1(md5(md5($code))));
}
return $code;
}
?>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$db_host = "127.0.0.1";
$db_user = "gebruikersnaam";
$db_pass = "wachtwoord";
$db_name = "projectnaam";
$db_conn = mysql_connect( $db_host, $db_user, $db_pass );
mysql_select_db( $db_name, $db_conn );
$db_user = "gebruikersnaam";
$db_pass = "wachtwoord";
$db_name = "projectnaam";
$db_conn = mysql_connect( $db_host, $db_user, $db_pass );
mysql_select_db( $db_name, $db_conn );
Edit: Ik zie dat hier boven het al wordt uitgelegd, iemand was de mysql_connect en mysql_select_db uitleg al voor :-)
Gewijzigd op 18/06/2012 22:30:12 door Maikel Haas
ben nog niet zolang bezig met php
het is moeilijker dan ik dacht
Toevoeging op 18/06/2012 22:35:01:
bij mij index.php pagina wordt ook de config.php aangeroepen
en dan geeft deze geen enkele fout dat hij niet kan verbinden met database ofzo
ik heb het geprobeerd maar nog altijd dezelfde fout
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
//Instellingen van de MySQL en database
$dbhost = 'localhost'; //Naam van je server
$dbname = 'MyISAM'; //Naam van je database
$dbuser = ini_get("mysql.default_user"); //Naam van de gebruiker
$dbpassword = ini_get("mysql.default_password"); //Wachtwoord gebruiker
//Verbinding maken met de database
$dbconnect = mysql_connect($dbhost, $dbuser, $dbpassword) or die ("Verbinding mislukt: " . mysql_error() );
mysql_select_db($dbname, $dbconnect);
//Queries voor pagina 2
$check_query = mysql_query(" SELECT *
FROM login
WHERE naam = '$_POST[naam]' ")
or die( mysql_error() );
$check = mysql_num_rows($check_query);
?>
//Instellingen van de MySQL en database
$dbhost = 'localhost'; //Naam van je server
$dbname = 'MyISAM'; //Naam van je database
$dbuser = ini_get("mysql.default_user"); //Naam van de gebruiker
$dbpassword = ini_get("mysql.default_password"); //Wachtwoord gebruiker
//Verbinding maken met de database
$dbconnect = mysql_connect($dbhost, $dbuser, $dbpassword) or die ("Verbinding mislukt: " . mysql_error() );
mysql_select_db($dbname, $dbconnect);
//Queries voor pagina 2
$check_query = mysql_query(" SELECT *
FROM login
WHERE naam = '$_POST[naam]' ")
or die( mysql_error() );
$check = mysql_num_rows($check_query);
?>
je kan ook checken door middel van: if( mysql_num_rows($check_query) == 0 ) { .. }
Gewijzigd op 18/06/2012 22:57:56 door Maikel Haas
Jonas Keppens op 18/06/2012 22:27:42:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//Instellingen van de MySQL en database
$dbhost = 'localhost'; //Naam van je server
$dbname = 'MyISAM'; //Naam van je database
$dbuser = ini_get("mysql.default_user"); //Naam van de gebruiker
$dbpassword = ini_get("mysql.default_password"); //Wachtwoord gebruiker
//Verbinding maken met de database
$db = mysql_connect("$dbhost", "$dbuser", "$dbpassword")
or die ("Verbinding mislukt");
mysql_select_db("$dbname", $db);
?>
//Instellingen van de MySQL en database
$dbhost = 'localhost'; //Naam van je server
$dbname = 'MyISAM'; //Naam van je database
$dbuser = ini_get("mysql.default_user"); //Naam van de gebruiker
$dbpassword = ini_get("mysql.default_password"); //Wachtwoord gebruiker
//Verbinding maken met de database
$db = mysql_connect("$dbhost", "$dbuser", "$dbpassword")
or die ("Verbinding mislukt");
mysql_select_db("$dbname", $db);
?>
En waar controleer je of de verbinding met de tabel gelukt is?
Jonas Keppens op 18/06/2012 22:27:42:
dus veronderstel ik dat hij wel verbinding kan maken
Dat is dus al verkeerd. Nooit veronderstellen, maar controleren. Elke mysql_ functie geeft ofwel een resource of data terug, of false om aan te geven dat de actie mislukt is. Bij elke aanroep van een mysql_ functie zal je dus moeten controleren wat er terug kwam. Was het false (checken met === false) dan kan je via de functie mysql_error() controleren wat er fout ging en die fout oplossen.
Toevoeging op 19/06/2012 09:07:14:
En dan nog een opmerking die overigens niet je probleem zal oplossen: variabelen niet tussen quotes gaan plaatsen. Dat is echt totale onzin en voegt compleet niets toe, behalve executie tijd.
Dus niet:
maar
@Erwin H: De namen heb ik ook aangepast
En wat zal acces denied betekenen? Juist geen toegang, oftewel inlog klopt niet
Toevoeging op 19/06/2012 16:20:52:
het werkt hij maakt verbinding maar nu gaat er hier iets mis hij geeft geen error hij geeft gewoon niets er zou moeten komen dat je geregistreerd ben en hier kunt inloggen
en er wordt ook niets in de database geplaatst
hieronder de code:
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
session_start();
include("config.php");
if($_POST['register']) {
if($_POST['naam']) {
if($_POST['ww1']) {
if($_POST['ww2']) {
if($_POST['ww2'] == $_POST['ww1']) {
$check_query = mysql_query("SELECT * FROM login WHERE naam = '" .$_POST['naam']. "'") or die(mysql_error());
$check = mysql_num_rows($check_query) or die(mysql_error());
if($check == "0"){
$ww = md5($_POST['ww1']);
mysql_query("INSERT INTO login (naam, ww) VALUES ('".$_POST['naam']."', '".$ww."')") or die(mysql_error());
$melding = "Je bent geregistreerd en kunt <a href='index.php'>hier</a> inloggen";
}
session_start();
include("config.php");
if($_POST['register']) {
if($_POST['naam']) {
if($_POST['ww1']) {
if($_POST['ww2']) {
if($_POST['ww2'] == $_POST['ww1']) {
$check_query = mysql_query("SELECT * FROM login WHERE naam = '" .$_POST['naam']. "'") or die(mysql_error());
$check = mysql_num_rows($check_query) or die(mysql_error());
if($check == "0"){
$ww = md5($_POST['ww1']);
mysql_query("INSERT INTO login (naam, ww) VALUES ('".$_POST['naam']."', '".$ww."')") or die(mysql_error());
$melding = "Je bent geregistreerd en kunt <a href='index.php'>hier</a> inloggen";
}
Gewijzigd op 19/06/2012 16:21:48 door Jonas K
Waar 'stopt' je script? ==> Ga debuggen.
Als je met if gaat werken, zorg dan dat je overzichtelijk inspringt. Nu heb je geen idee welke { bij } hoort.
Controleren of een formulier verzonden is doe je met if($_SERVER['REQUEST_METHOD'] == "POST")
Controleren of een variabele bestaat doe je met isset.
Selecteer het veld/de velden die je wilt, geen *
Je query is 'lek'/onbeveiligd.
Or die is geen foutafhandeling.
$ww is onnodig variabele aanmaken/kopiëren
md5 is onveilig om een wachtwoord mee te 'beveiligen'.
in PHP ' gebruiken, in html " -->
Kortom: lees nog eens wat basistut's door.
Of kijk bv eens naar http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/
Gewijzigd op 19/06/2012 16:43:29 door Obelix Idefix