drezzia Posted September 7, 2022 Share Posted September 7, 2022 I have two methods in a class. The first is save_comment() It basically just inserts comment into db and then after its successfully another method is called to load some comments and the method is named load_comments() This is the code for better understanding. Unnecessary part had been commented out. function save_comment() { //$this->Functions->debug(); //request token //$token = $this->Functions->clean($_GET["token"]); //check for csrf // $check = $this->Functions->csrf_check($token); /*if ($check === false) { $this->Functions->api_response("Invalid Request!!!", 0, "csrf"); }*/ $pid = $this->Functions->clean($_GET["pid"]); $offset = $this->Functions->clean("", $_GET["offset"], ""); //comment $comment = $this->Functions->clean($_GET["user_comment"]); //check login status /* if (!isset($_SESSION["user"])) { $this->Functions->api_response( "You must login to make comments !!!.", 0, "csrf" ); }*/ //check if comment is less than 5 charcaters. /* if (strlen($comment) < 5) { $this->Functions->api_response( "Your Comment is too short !!!.", 0, "csrf" ); }*/ try { $user = $_SESSION["user"]; $params = ["sss", "?,?,?", [$pid, $user, $comment]]; $save_comment = $this->CustomDB->insert( "comments", "pid,user,comment", $params ); if ($save_comment->affected_rows == 1) { $offset = 0; $data = $this->load_comments($pid, $offset); echo $data;//this returns empty string $this->Functions->api_response( "Thanks!! Your Comment has been submitted 🤗 ", 1, "csrf", $data ); } else { throw new Exception("Something went wrong. Try again!!!"); } } catch (Exception $e) { //try $msg = $e->getMessage(); $this->Functions->api_response($msg, 0, "csrf"); } } //comment() Now the second method is function load_comments($pid, $offset) { $this->Functions->debug(); //get comments so we can update at frontend $params = ["si", [$pid, $offset]]; //fetch comments $fetch = $this->CustomDB->query_custom( "SELECT * FROM comments WHERE pid=? ORDER BY id DESC LIMIT 10 OFFSET?", $params ); $fetch = $fetch["result"]; $html = ""; //$html; while ($row = $fetch->fetch_assoc()) { $name = $row["user"]; $comment = $row["comment"]; $html .= '<div class="columns is-mobile display"><div style="border-radius:30px 30px 30px 30px;" class="column is-full box"><p class="subtitle is-6 mb-3"><em>' . $comment . '</em></p><span class="bold ml-2">' . $name . "</span></div></div><br>"; } return $html; } I can't really figure why it shouldn't work as expected Quote Link to comment https://forums.phpfreaks.com/topic/315288-why-am-i-getting-am-empty-string-return-value-from-method-call/ Share on other sites More sharing options...
Solution drezzia Posted September 7, 2022 Author Solution Share Posted September 7, 2022 (edited) Thanks for your help... After spending several hours, I was able to figure where the error lies. All I posted was actually OK but the method for querying db that is inside load_comments() had lil issues. The line `$this->query_custom()` This is how the query_custom() method looks like... function query_custom($sql, $params = "") { $stmt = $this->con->prepare($sql); if (isset($params)) { $stmt->bind_param($params[0], ...$params[1]); } $stmt->execute(); $res = $stmt->get_result(); $row = $res->fetch_assoc(); $count = $res->fetch_row(); return [ "result" => $res, "execute" => $stmt, "row" => $row, "count" => $count, ]; } Since I want to loop through the results with a while loop then I should have left out this line... `$row = $res->fetch_assoc()` and therefore return *$res*. So when I changed it to what I have below, it works as expected. function query_custom($sql, $params = "") { $stmt = $this->con->prepare($sql); if (isset($params)) { $stmt->bind_param($params[0], ...$params[1]); } $stmt->execute(); $res = $stmt->get_result(); return [ "result" => $res, "execute" => $stmt, ]; } Edited September 7, 2022 by drezzia Quote Link to comment https://forums.phpfreaks.com/topic/315288-why-am-i-getting-am-empty-string-return-value-from-method-call/#findComment-1600212 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.