Krijg mijn id niet terug van $row['id'];
Allereerst bedankt voor de fijne en snelle reacties, waarbij iedereen heel behulpzaam overkomt!
Ik ben bezig om weer eens iets nieuws te proberen in php en mysql waarbij ik alles zelf aan het schrijven ben. Ik probeer mijn vragen wel op internet op te zoeken en meestal vind ik hier een antwoord, maar nu lukt het niet.
Ik probeer in mijn php bestand het id van de ander terug te geven met de volgende code:
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
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
<?php
error_reporting(E_ALL); // geef alle errors weer.
$host = // locale database
$username = // de naam van je database
$password = // het wachtwoord in erin te komen meestal leeg
$database = // De naam van je databse
$idd = $_GET['idd']; // de variable die je uit de URL haalt.
$level = $_GET['level']; // de variable die je uit de URL haalt.
// Create connection
$conn = mysqli_connect($host, $username, $password, $database);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT * FROM players WHERE 'level' = '$level' AND NOT 'id' = '$idd'";
if ($result=mysqli_query($conn, $sql)) {
while($row = mysqli_fetch_row($result))
{
echo "1|" . $row['id'];
}
}
else
{
echo "0";
}
mysqli_close($conn);
?>
error_reporting(E_ALL); // geef alle errors weer.
$host = // locale database
$username = // de naam van je database
$password = // het wachtwoord in erin te komen meestal leeg
$database = // De naam van je databse
$idd = $_GET['idd']; // de variable die je uit de URL haalt.
$level = $_GET['level']; // de variable die je uit de URL haalt.
// Create connection
$conn = mysqli_connect($host, $username, $password, $database);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT * FROM players WHERE 'level' = '$level' AND NOT 'id' = '$idd'";
if ($result=mysqli_query($conn, $sql)) {
while($row = mysqli_fetch_row($result))
{
echo "1|" . $row['id'];
}
}
else
{
echo "0";
}
mysqli_close($conn);
?>
Waarom id niet gelijk mag zijn aan $idd is omdat je niet tegen dezelfde persoon moet kunnen vechten. (Het is gekoppeld aan een spelletje die ik programmeer. Nu probeer ik met de echo "1|" . $row['id']; het id van de ander terug te sturen, maar het bericht blijft constant leeg.
Als ik eruit haal en dat verander in dan krijg ik wel de 1 binnen. De fout zal hem dus zitten in while($row = mysqli_fetch_row($result)) maar ik weet niet wat ik fout doe...
Kan iemand mij helpen, waardoor ik de row van de tabel terug kan sturen?
Groetjes,
Dennis
Gewijzigd op 06/04/2015 19:14:26 door Dennis van DUin
Gebruik fetch_assoc, dat werkt waarschijnlijk beter.
EDIT: je mist ook
error_reporting geeft aan wat voor errors je wilt zien, display_errors geeft aan waar je deze wilt zien, als je een van de twee niet definieert heb je grote kans dat fouten niet (of niet op je scherm, maar elders) worden gemeld.
Als je display_errors toevoegt krijg je waarschijnlijk de foutmelding "notice: undefined index "id" on line xyz".
Gewijzigd op 06/04/2015 18:25:46 door Thomas van den Heuvel
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
$sql = "SELECT * FROM players WHERE 'level' = '$level' AND NOT 'id' = '$idd'";
if ($result=mysqli_query($conn, $sql)) {
while($row = $result->fetch_assoc()){
echo "1|" . $row['id'];
}
}
else
{
echo "0";
}
if ($result=mysqli_query($conn, $sql)) {
while($row = $result->fetch_assoc()){
echo "1|" . $row['id'];
}
}
else
{
echo "0";
}
Me berichtje blijft leeg...? Ik ken de functie die jij geeft niet dus misschien doe ik iets fout...
Edit:
Ik heb ook de error toegevoegd maar ik krijg niks te zien:
Link:
http://onlineapp.altervista.org/valaan.php?idd=1&level=1
Gewijzigd op 06/04/2015 18:33:48 door Dennis van DUin
De constructie AND NOT 'id' = '$idd' is nogal vreemd?
Zou dit niet AND id <> '$idd' moeten zijn ofzo?
(belangrijk: de KOLOMNAAM moet NIET tussen quotes)
Daarnaast pakt ie de NOT van een niet-lege string, die je vervolgens met een integer vergelijkt, dit zal vrijwel zeker valideren tot "false" en een query met ... AND false ... levert nooit iets op.
Ook controleer je nergens of de query fouten oplevert.
Retourneert $result toevallig false?
EDIT: mijn malware programma blokkeert je website :).
Gewijzigd op 06/04/2015 18:41:44 door Thomas van den Heuvel
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
$sql = "SELECT * FROM players WHERE 'level' = '$level' AND id <> '$idd'";
if ($result=mysqli_query($conn, $sql)) {
$rowcount = $result->num_rows;
echo $rowcount;
}
else
{
echo "5";
}
if ($result=mysqli_query($conn, $sql)) {
$rowcount = $result->num_rows;
echo $rowcount;
}
else
{
echo "5";
}
Da krijg ik als echo 0. Dus rowcount is 0...
Screen van me databse:
Edit:
Kort gezegd wat ik wil bereiken is dat het script een id terug stuurt van iemand met hetzelfde level als je binnen krijgt bij de get. Maar het id mag niet hetzelfde zijn als het id dat bij de get binnen komt.
En wat bedoel je hiermee?
Ook controleer je nergens of de query fouten oplevert.
Groetjes,
Dennis
Gewijzigd op 06/04/2015 19:02:03 door Dennis van DUin
met
WHERE '<kolom>' = '<getal>'
vergelijk je de string '<kolom>' met "getal" '<getal>'
Dit levert nooit iets op...
met
WHERE <kolom> = '<getal>'
vergelijk je de tabel-kolom <kolom> met "getal" '<getal>'.
En "getal" is in feite een string met een numerieke waarde...
Je vergelijkt de tekst level met de inhoud van $level.
Groetjes,
Dennis
?
Groetjes,
Dennis