This is my first experience with mysqli. It seems to be looking for the name of a result set in between the parentheses in mysqli_num_rows(). Yet when I tried $stmt, $conn, and nothing, I got the same error. Frustrating! What goes where $WHAT is in the last line below?
Or maybe I’m trying the wrong tack. All I want to do is check that a result was returned. I don’t really need the number of rows. Should I just do an else statement with an error message? Is that the best way to do it? And is there a good way to write a function to connect and accept the query and it’s parameters? I wrote one for mysql but this is so different! I’m not looking forward to rewriting dozens of queries!
$conn = mysqli_connect($host, $user, $pwd, $db,$port=$port_nbr);
if ($mysqli_connect_errno) {
printf("Connect failed: %s\n",
mysqli_connect_error());
exit;
}
if($stmt=$conn->prepare("SELECT id, name, status, type FROM organization")) {
$stmt->execute();
$stmt->bind_result($org_id, $orgname, $orgstatus, $orgtype);
$num=mysqli_num_rows($WHAT);
}
PHP can return the number of rows only if the result set returned by the query is buffered on the PHP side. But prepared queries are unbuffered by default. So in order to get the number you need to call the
get_result()method first:but in reality you don’t actually need that number. Given you will fetch the selected data anyway, using either
fetch_assoc()orfetch_all()methods, you can always use that data instead of $num.