Krooy_mans
Krooy_mans

Reputation: 324

PHP, MySQL statement results in ZERO rows

hope someone can help me.

i have a very simple prepared SELECT statment in PHP:

        $query_select = ("SELECT * FROM companies where user_name = ? ");
        $stmt = $mysqli->prepare($query_select);
        $stmt->bind_param("s", $user_name);
        $stmt->execute();
        $count = $stmt->num_rows;

in companies table I have several rows with the $user_name i`m trying to query. But i still get 0 rows as a result.

The strange thing is that the non PREPARED version works:

$query = 'SELECT * FROM companies WHERE user_name="'.$user_name.'"'; 
$result = $mysqli->query($query);
$count= $result->num_rows;
echo "Aantal: ".$count;

So my question is, does anyone know why the prepared version returns ZERO and the non prepared version returns the correct number of rows?

Upvotes: 1

Views: 80

Answers (3)

netwer
netwer

Reputation: 737

May be you need to bind the result:

/* bind result variables */ $stmt->bind_result($district);

Full example here

Upvotes: 0

rjdown
rjdown

Reputation: 9227

For mysqli prepared statements, you must take an additional step: storing the result.

Try this:

$query_select = ("SELECT * FROM companies where user_name = ? ");
$stmt = $mysqli->prepare($query_select);
$stmt->bind_param("s", $user_name);
$stmt->execute();
$stmt->store_result(); // <-- new line
$count = $stmt->num_rows;

Upvotes: 0

Eda190
Eda190

Reputation: 679

Add this line to your code between execute and num_rows statement.

$stmt->store_result();

You have to store it before counting it.

Upvotes: 2

Related Questions