funbinod Posted December 24, 2017 Share Posted December 24, 2017 hello all! greetings! i'm trying to fetch data from a prepared statement and using some variables to pass the query $wh = "class=? AND section=?"; $param = "'ss', $clas, $sec"; $stmt = $mysqli->prepare("SELECT CONCAT(fname, ' ', lname) AS name, fullid, roll FROM students WHERE $wh AND ay='$ay' AND cid='$cid'"); if (!$stmt->bind_param($param)) { echo "Bind Error: " . $stmt->error; } ?> this is showing error but only "Bind Error:" not the "$stmt->error". i tried to echo $wh and $param value also and they give the same value as i intend. why this is happening? please guide. thanks in advance. Link to comment Share on other sites More sharing options...
Ingolme Posted December 24, 2017 Share Posted December 24, 2017 An error only occurs after a statement has been executed. The error here is not a MySQL error, it's a PHP error. You can't pass one single string as multiple arguments of a function, you have to call it like this: $stmt->bind_param('ss', $clas, $sec) 1 Link to comment Share on other sites More sharing options...
funbinod Posted December 24, 2017 Author Share Posted December 24, 2017 (edited) @Ingolme thank u for the reply! i appreciate your suggestion. but my requirement is something different. i have multiple cases for passing variables to the prepared statement. value for $wh and $param differ if the case is different. like - in the above example the value of $wh and $param are set when $sec has different value. but if $sec is not set differently then $wh and $param will have only one parameter. if ($sec == 'ALL') { $wh = 'class=?'; $param = "'s', $clas"; } else { $wh = "class=? AND section=?"; $param = "'ss', $clas, $sec"; } how can i solve this issue then? Edited December 24, 2017 by funbinod Link to comment Share on other sites More sharing options...
funbinod Posted December 24, 2017 Author Share Posted December 24, 2017 ok! i solved this like this if ($sec == 'ALL') { $stmt = $mysqli->prepare("SELECT CONCAT(fname, ' ', lname) AS name, fullid, roll, section FROM students WHERE class=? AND ay='$ay' AND cid='$cid'"); $stmt->bind_param('s', $clas); } else { $stmt = $mysqli->prepare("SELECT CONCAT(fname, ' ', lname) AS name, fullid, roll, section FROM students WHERE class=? AND section=? AND ay='$ay' AND cid='$cid'"); $stmt->bind_param('ss', $clas, $sec); } thank u for being with me and giving some hint! is there any other good idea to do this? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now