Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysqli_num_rows() expects parameter 1 to be mysqli_result, object

Tags:

php

mysqli

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);
}
like image 709
dac Avatar asked Dec 27 '22 21:12

dac


2 Answers

You're combining procedural and object oriented approaches, when you only want object oriented. Change

$num=mysqli_num_rows($WHAT);

to

$num = $stmt->num_rows();
like image 98
shmeeps Avatar answered Jan 19 '23 00:01

shmeeps


mysqli_num_rows takes the query result as a parameter http://us.php.net/manual/en/mysqli-result.num-rows.php

You could also use it in an OOP style as $result->num_rows;

like image 38
Brian Avatar answered Jan 18 '23 23:01

Brian