FruitFaster Posted May 4, 2013 Share Posted May 4, 2013 The value I want storing is not being stored ($final) in the database which is staying at 0 or being updated as 0. Please can someone hint me in the right direction. <?php $con2=mysqli_connect("host.com","uname","pwd","dbase"); // Check connection if (mysqli_connect_errno($con2)) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $value=$_POST['rating']; $id=$_POST['id']; mysqli_query ($con2, "UPDATE table SET totalraters = totalraters + 1 WHERE id='$id' "); mysqli_query ($con2, "UPDATE table SET ratingsum = ratingsum + '$value' WHERE id='$id' "); $query = "SELECT ratingsum, totalraters FROM table WHERE id='$id' "; $result2=mysqli_query($con2, $query); while ($row2= mysqli_fetch_array($result2)) { $ratingsum=$row2['ratingsum']; $totalraters=$row2['totalraters']; IF ($totalraters != 0) { $rating = ($ratingsum/$totalraters); $final = (int)round($rating); } mysqli_query ($con2, "INSERT INTO table rating VALUES '$final' WHERE id='$id' "); include ('index.html'); } ?> The table has a field called 'rating' which is set to int (6) NOT NULL. Link to comment https://forums.phpfreaks.com/topic/277634-database-not-taking-value/ Share on other sites More sharing options...
jcbones Posted May 4, 2013 Share Posted May 4, 2013 Being that there is obviously more than one column in the `table rating` table, then you would need to specify the column that you want the value stored in. You should always add de-bugging into your scripts, it will help you with these time consuming errors: change mysqli_query ($con2, "INSERT INTO table rating VALUES '$final' WHERE id='$id' "); to mysqli_query ($con2, "INSERT INTO table rating VALUES '$final' WHERE id='$id' ") or trigger_error(mysqli_error($con2)); Link to comment https://forums.phpfreaks.com/topic/277634-database-not-taking-value/#findComment-1428268 Share on other sites More sharing options...
FruitFaster Posted May 5, 2013 Author Share Posted May 5, 2013 Thankyou! I changed that and realised what was wrong with that line (there's no WHERE for INSERT INTO) so I changed it. I checked my database but the number in the rating field is wrong. It updated it to 1 and it should be 4. The line I changed is now: mysqli_query ($con2, "UPDATE table SET rating='$final' AND id='$id' ") or trigger_error(mysqli_error($con2)); Link to comment https://forums.phpfreaks.com/topic/277634-database-not-taking-value/#findComment-1428272 Share on other sites More sharing options...
FruitFaster Posted May 5, 2013 Author Share Posted May 5, 2013 Please can someone give me a hint as why my database is being updated wrongly as explained ^^^^ Link to comment https://forums.phpfreaks.com/topic/277634-database-not-taking-value/#findComment-1428279 Share on other sites More sharing options...
jcbones Posted May 5, 2013 Share Posted May 5, 2013 You will need to detail the expected values, AND your table structures. these two mysqli_query ($con2, "UPDATE table SET totalraters = totalraters + 1 WHERE id='$id' "); mysqli_query ($con2, "UPDATE table SET ratingsum = ratingsum + '$value' WHERE id='$id' "); Can be combined mysqli_query($con2,"UPDATE table SET totalraters = totalraters + 1, ratingsum = ratingsum + $value WHERE id = $id"); I'm still not sure what `table rating` looks like, nor how it ties into the other tables, so I won't put a query here for it as it may lead down the wrong rabbit hole, until structure and usage is addressed. Link to comment https://forums.phpfreaks.com/topic/277634-database-not-taking-value/#findComment-1428305 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.