mysql_num_rows() expects parameter 1 to be resource, boolean given
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
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
<html>
<head>
<title>Profile</title>
<link rel='stylesheet' href='style.css' />
</head>
<body>
<?php include 'connect.php'; ?>
<?php include 'functions.php'; ?>'
<?php include 'header.php'; ?>
<div class='container'>
<?PHP
if(isset($_GET['user']) && !empty($_GET['user'])){
$user = $_GET['user'];
} else {
$user = $_SESSION['user_id'];
}
$my_id = $_SESSION['user_id'];
$username = getuser($user, 'username');
?>
<h3><?php echo $username; ?></h3>
<?php
if($user != $my_id){
$check_frnd_query = mysql_query("SELECT id FROM frnds WHERE (user_one='$my_id' AND user_two='$user') OR (user_one='$user' AND user_two='$my_id')");
if(mysql_num_rows($check_frnd_query) == 1) {
echo "<a href='' class='box'></a> | <a href='' class='box'>$username</a>";
} else {
$from_query = mysql_query("SELECT 'id' FROM 'frnd_req' WHERE 'from'='$user' AND 'to'='$my_id'");
$to_query = mysql_query("SELECT 'id' FROM 'frnd_req' WHERE 'to'='$my_id' AND 'to'='$user'");
if(mysql_num_rows($from_query) == 1){
echo "ignore request";
} else if (mysql_num_rows($to_query) == 1){
echo "<a href='actions.php?action=send&user=$user' class='box'>Cancel Request</a>";
} else{
echo "<a href='actions.php?action=send&user=$user' class='box'>Send Request</a>";
}
}
}
?>
</div>
</body>
</html>
<head>
<title>Profile</title>
<link rel='stylesheet' href='style.css' />
</head>
<body>
<?php include 'connect.php'; ?>
<?php include 'functions.php'; ?>'
<?php include 'header.php'; ?>
<div class='container'>
<?PHP
if(isset($_GET['user']) && !empty($_GET['user'])){
$user = $_GET['user'];
} else {
$user = $_SESSION['user_id'];
}
$my_id = $_SESSION['user_id'];
$username = getuser($user, 'username');
?>
<h3><?php echo $username; ?></h3>
<?php
if($user != $my_id){
$check_frnd_query = mysql_query("SELECT id FROM frnds WHERE (user_one='$my_id' AND user_two='$user') OR (user_one='$user' AND user_two='$my_id')");
if(mysql_num_rows($check_frnd_query) == 1) {
echo "<a href='' class='box'></a> | <a href='' class='box'>$username</a>";
} else {
$from_query = mysql_query("SELECT 'id' FROM 'frnd_req' WHERE 'from'='$user' AND 'to'='$my_id'");
$to_query = mysql_query("SELECT 'id' FROM 'frnd_req' WHERE 'to'='$my_id' AND 'to'='$user'");
if(mysql_num_rows($from_query) == 1){
echo "ignore request";
} else if (mysql_num_rows($to_query) == 1){
echo "<a href='actions.php?action=send&user=$user' class='box'>Cancel Request</a>";
} else{
echo "<a href='actions.php?action=send&user=$user' class='box'>Send Request</a>";
}
}
}
?>
</div>
</body>
</html>
Edit:
Code plaatsen we liever tussen de [code]-tags. Bij deze heb ik het aangepast.
Gewijzigd op 20/06/2013 11:51:02 door - Ariën -
Probeer je query zo eens.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
("SELECT id FROM frnd_req WHERE from=".$user." AND to=".$my_id."")
// en je andere query zo
("SELECT id FROM frnd_req WHERE to=".$my_id." AND to=".$user."")
?>
("SELECT id FROM frnd_req WHERE from=".$user." AND to=".$my_id."")
// en je andere query zo
("SELECT id FROM frnd_req WHERE to=".$my_id." AND to=".$user."")
?>
Gewijzigd op 20/06/2013 11:52:43 door Chris PHP
Ik denk dat het aan de ' rond de tabel- en kolomnamen ligt, deze moet je hier weglaten
' horen alleen om de zoekterm ($user en $my_id
(hier een lijst: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html )
De naam from is heel ongelukkig gekozen (EDIT: ik zie dat from niet in de lijst staat, maar gebruik het toch maar niet).
Als je het simpel wil oplossen, vervang dat. Zo vlug mogelijk.
---
Verder: echo de SQL string, copy/paste ze in phpMyAdmin, daar krijg je gemakkelijker een volledige uitleg
Gewijzigd op 20/06/2013 12:26:21 door Kris Peeters
Chris NVT op 20/06/2013 11:44:33:
Dat houdt over het algemeen in dat je query mislukt is. Wanneer je query slaagt krijg je een resource terug, anders een boolean (false).
Probeer je query zo eens.
Probeer je query zo eens.
Bedankt! ik heb ze vervangen met deze query's en het werkt weer. Overigens moesten ze wel tussen haakjes.
dit is de oplossing:
Quote:
Deze topic kan gesloten worden!
Zo is id toch gewoon de tekst 'id' en niet de inhoud van het veld id.
Kan mij dus niet voorstellen dat het werkt.
Gewijzigd op 20/06/2013 14:14:14 door - SanThe -
Misschien worden hier back ticks bedoeld?
Zo zou het moeten, op jou manier krijg ik zelf een gefaalde query
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
// Enkel veld selecteren
SELECT id FROM ....
//Meerdere velden selecteren
SELECT id, wachtwoord, naam FROM ....
?>
// Enkel veld selecteren
SELECT id FROM ....
//Meerdere velden selecteren
SELECT id, wachtwoord, naam FROM ....
?>
Houd er overigens wel rekening mee dat je nu gevoelig bent voor injectie! Je escaped je input niet, gebruik mysql_real_escape_string(); om je waades te escapen.
Toevoeging op 20/06/2013 14:24:05:
Om je op weg te helpen, pas het dus zo aan als je variabelen wil gebruiken (raad ik niet aan vanwege onnodige resources dat het kost).
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if(isset($_GET['user']) && !empty($_GET['user'])){
$user = mysql_real_escape_string($_GET['user']);
} else {
$user = mysql_real_escape_string($_SESSION['user_id']);
}
$my_id = mysql_real_escape_string($_SESSION['user_id']);
?>
if(isset($_GET['user']) && !empty($_GET['user'])){
$user = mysql_real_escape_string($_GET['user']);
} else {
$user = mysql_real_escape_string($_SESSION['user_id']);
}
$my_id = mysql_real_escape_string($_SESSION['user_id']);
?>
Gewijzigd op 20/06/2013 14:20:33 door Chris PHP
- SanThe - op 20/06/2013 14:13:16:
zo kan het het ook:
Quote:
"SELECT id FROM frnd_req WHERE 'from'=".$user." AND 'to'=".$my_id.""
"SELECT id FROM frnd_req WHERE 'from'=".$my_id." AND 'to'=".$user.""
"SELECT id FROM frnd_req WHERE 'from'=".$my_id." AND 'to'=".$user.""
Ik krijg geen foutmeldingen meer!
Ook daar zouden om from en to geen quotes (') moeten staan, dit zijn velden en geen strings.
Vervang die from toch maar. Noem dat anders.
Kris Peeters op 20/06/2013 14:29:53:
Vervang die from toch maar. Noem dat anders.
Idd, kan verwarrend zijn. Maak er gewoon 'van' van ofzo ;-)
Ik heb het vervangen maar ik krijg dan nog steeds een foutmelding! En idd. als ik de '' om de velden doe gaat die foutnelding weg, maar de functie werkt dan niet meer!
George mendel op 20/06/2013 14:34:57:
Ik heb het vervangen maar ik krijg dan nog steeds een foutmelding!
Welke?
Met quotes om een veldnaam is het geen veldnaam meer maar tekst. Dat zal inderdaad geen foutmelding geven maar ook geen resultaten.
George mendel op 20/06/2013 14:34:57:
Ik heb het vervangen maar ik krijg dan nog steeds een foutmelding! En idd. als ik de '' om de velden doe gaat die foutnelding weg, maar de functie werkt dan niet meer!
Komt dus waarschijnlijk door je FROM from=, MySQL kan dat zien als 2x een FROM en dat kan niet. Dus zoals eerder al aangegeven verander het veld from naar van.
Chris NVT op 20/06/2013 14:38:14:
Komt dus waarschijnlijk door je FROM from=, MySQL kan dat zien als 2x een FROM en dat kan niet. Dus zoals eerder al aangegeven verander het veld from naar van.
George mendel op 20/06/2013 14:34:57:
Ik heb het vervangen maar ik krijg dan nog steeds een foutmelding! En idd. als ik de '' om de velden doe gaat die foutnelding weg, maar de functie werkt dan niet meer!
Komt dus waarschijnlijk door je FROM from=, MySQL kan dat zien als 2x een FROM en dat kan niet. Dus zoals eerder al aangegeven verander het veld from naar van.
Ik heb dit nu:
Quote:
("SELECT id FROM frnd_req WHERE van=".$user." AND to=".$my_id."");
("SELECT id FROM frnd_req WHERE van=".$my_id." AND to=".$user."");
("SELECT id FROM frnd_req WHERE van=".$my_id." AND to=".$user."");
maar het geeft dezelfde fout
Uhmmm..... Wilde gok hier, maar heb je het veld OOK in je database veranderd? Dat denk ik namelijk niet.
Chris NVT op 20/06/2013 14:43:13:
Uhmmm..... Wilde gok hier, maar heb je het veld OOK in je database veranderd? Dat denk ik namelijk niet.
Ja hij is in de database ook vervangen!
("SELECT id FROM frnd_req WHERE van='".$user."' AND to='".$my_id."'");
("SELECT id FROM frnd_req WHERE van='".$my_id."' AND to='".$user."'");
From is een reserved word van mysql, maar to is dat ook. Dus to moet je ook in iets anders veranderen.
Gewijzigd op 20/06/2013 14:47:17 door - SanThe -
- SanThe - op 20/06/2013 14:45:31:
Je mist de (enkele) quotes om de data heen.
("SELECT id FROM frnd_req WHERE van='".$user."' AND to='".$my_id."'");
("SELECT id FROM frnd_req WHERE van='".$my_id."' AND to='".$user."'");
From is een reserved word van mysql, maar to is dat ook. Dus to moet je ook in iets anders veranderen.
("SELECT id FROM frnd_req WHERE van='".$user."' AND to='".$my_id."'");
("SELECT id FROM frnd_req WHERE van='".$my_id."' AND to='".$user."'");
From is een reserved word van mysql, maar to is dat ook. Dus to moet je ook in iets anders veranderen.
Helaas, dat helpt ook niet!
Wat is dan de complete error?