fout in mysqli query
Die twee query's hebben beiden dezelfde inhoud dus dat kan je in één query doen met LIMIT 2.
Ik heb achter elke mysqli query een or die(mysql_error()); geplaatst, doe ik dit bij resultaat 1 en 2 dan krijg ik opnieuw een blanco pagina. Dit zijn de queries die ik een paar posts terug heb aangepast, daar zit dus de fout.
Gewijzigd op 18/05/2014 18:21:54 door Louis Deconinck
Louis Deconinck op 18/05/2014 18:21:03:
Als ik ze in 1 query stop, loop ik dan niet het risico dat ze beiden dezelfde persoon selecteren?
Als die persoon er meerdere keren in bestaat wel, anders niet.
Nog steeds problemen met deze queries, kan er misschien een foutje zijn ingeslopen?
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$result1 = mysqli_query($link, "SELECT * FROM main WHERE gender='$gender' ORDER BY RAND() LIMIT1");
$row1 = mysqli_fetch_assoc($result1);
$fbid1=$row1['fbid'];
$id1=$row1['id'];
$result2 = mysqli_query($link, "SELECT * FROM main WHERE id != '$id1' AND gender='$gender' ORDER BY RAND() LIMIT1");
$row2 = mysqli_fetch_assoc($result2);
$fbid2=$row2['fbid'];
?>
$result1 = mysqli_query($link, "SELECT * FROM main WHERE gender='$gender' ORDER BY RAND() LIMIT1");
$row1 = mysqli_fetch_assoc($result1);
$fbid1=$row1['fbid'];
$id1=$row1['id'];
$result2 = mysqli_query($link, "SELECT * FROM main WHERE id != '$id1' AND gender='$gender' ORDER BY RAND() LIMIT1");
$row2 = mysqli_fetch_assoc($result2);
$fbid2=$row2['fbid'];
?>
Je vertelt wel steeds dat je problemen hebt, maar wat houdt je tegen dat je geen foutafhandeling toevoegt aan je queries? Zulke dingen maken het oplossen daarvan veel makkelijker......
Ik dacht dat or die(mysql_error()); foutenafhandeling was, wat kan ik nog meer doen?
http://www.phphulp.nl/php/forum/topic/fout-in-mysqli-query/94933/1/#681547
Bekijk de link achter deze link eens.
Bekijk de link achter deze link eens.
Het vorige probleem heb ik kunnen oplossen door enkele waardes te echoen, bleek dat er een fout zat bij de default waardes van de gender (dus als er nog geen POST was).
Als ik nu echter op een persoon klik en volgende code zou moeten uitgevoerd worden, krijg ik een wit scherm:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if(isset($_POST['winner'])){
$winner=$_POST["winner"];
$loser=$_POST["loser"];
$result3 = mysqli_query($link, "SELECT * FROM main WHERE fbid in ($winner)") or die(mysql_error());
$result4 = mysqli_query($link, "SELECT * FROM main WHERE fbid in ($loser)") or die(mysql_error());
$row3 = mysqli_fetch_assoc($result3);
$row4 = mysqli_fetch_assoc($result4);
$ratingwinner=$row3['rating'];
$ratingloser=$row4['rating'];
$points=($ratingwinner/$ratingloser)*20;
$newratingwinner=$ratingwinner+$points;
$newratingloser=$ratingloser-$points;
$result5 = mysqli_query($link, "UPDATE rating FROM main SET rating='$newratingwinner' WHERE fbid in ($winner)") or die(mysql_error());
$result6 = mysqli_query($link, "UPDATE rating FROM main SET rating='$newratingloser' WHERE fbid in ($loser)") or die(mysql_error());
}
?>
if(isset($_POST['winner'])){
$winner=$_POST["winner"];
$loser=$_POST["loser"];
$result3 = mysqli_query($link, "SELECT * FROM main WHERE fbid in ($winner)") or die(mysql_error());
$result4 = mysqli_query($link, "SELECT * FROM main WHERE fbid in ($loser)") or die(mysql_error());
$row3 = mysqli_fetch_assoc($result3);
$row4 = mysqli_fetch_assoc($result4);
$ratingwinner=$row3['rating'];
$ratingloser=$row4['rating'];
$points=($ratingwinner/$ratingloser)*20;
$newratingwinner=$ratingwinner+$points;
$newratingloser=$ratingloser-$points;
$result5 = mysqli_query($link, "UPDATE rating FROM main SET rating='$newratingwinner' WHERE fbid in ($winner)") or die(mysql_error());
$result6 = mysqli_query($link, "UPDATE rating FROM main SET rating='$newratingloser' WHERE fbid in ($loser)") or die(mysql_error());
}
?>
Gewijzigd op 18/05/2014 18:47:40 door Louis Deconinck
is ook logisch: zelfs als $_POST['winner'] bestaat, dan geeft dat geen enkel resultaat naar het scherm toe.
Code (php)
1
2
3
4
2
3
4
<?php
$result5 = mysqli_query($link, "UPDATE rating FROM main SET rating='$newratingwinner' WHERE fbid in ($winner)");
$result6 = mysqli_query($link, "UPDATE rating FROM main SET rating='$newratingloser' WHERE fbid in ($loser)");
?>
$result5 = mysqli_query($link, "UPDATE rating FROM main SET rating='$newratingwinner' WHERE fbid in ($winner)");
$result6 = mysqli_query($link, "UPDATE rating FROM main SET rating='$newratingloser' WHERE fbid in ($loser)");
?>
Alles werkt, behalve het updaten van de ratings in de database, ik heb de ratings geechoed en ze kloppen.
Louis Deconinck op 18/05/2014 18:47:28:
Ik had al verteld dat ik niet echt snap wat die github is of doet ...
Zie het als een voorbeeld-template die aangeeft hoe je je code het beste kunt opbouwen. De script zelfs zijn niet direct 1-op-1 bruikbaar, maar het gaat puur om de commentaren en de wat het script doet.
Lees eens door, en dan weet je hoe je een fatsoenlijk script kan opbouwen.
Ik alles is opgelost. Bedankt voor de goede hulp iedereen. Het laatste probleem was dus dat er geen FROM staat in een update query.
Waarom wil je twee tabellen tegelijker tijd updaten?, dat neigt naar een slecht database model