Vra

Ek is die skryf van 'n databasis hanteerder klas in PHP met behulp van die mysqli klas en bereid state. Ek het probeer om uit te druk die resultaat. Dit het nie reg van die kolf af werk so ek besluit om 'n paar debugging doen. Ek het probeer om die num_rows() metode gebruik van die mysqli_statement klas, maar dit het sy terugkeer 0. het ek besluit om 'n klein gedeelte van toets-kode skryf om te hou dit eenvoudiger sodat ek kon sien wat verkeerd gaan. Ek was toe in staat is om die data wat ek wou terugkeer nie, maar die num_rows() metode nog terugkeer 0 selfs wanneer dit eintlik is te kies en te herwin sommige data. Hier is die kode:

$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if(mysqli_connect_errno())
{
  die('connection failed');
}

$statement = $mysqli->stmt_init();

$query = "SELECT name FROM table WHERE id = '2000'";
if($statement->prepare($query))
{
    $statement->execute();
    $statement->bind_result($name);
    $statement->fetch();
    $statement->store_result();
    echo $statement->num_rows();
    echo $name; 
}
else
{
    echo 'prepare statement failed';
    exit();
}

So ja, verwagte resultaat is:

1name

En werklike resultaat is:

0name

Kan iemand my vertel waarom dit?

Was dit nuttig?

Oplossing

Ek wonder of NUM_ROWS () is berig relatief tot die huidige resultset. Probeer vas te lê NUM_ROWS () voor haal die data. Bv.

if($statement->prepare($query))
{
    $statement->execute();
    $statement->store_result();
    echo $statement->num_rows();
    $statement->bind_result($name);
    $statement->fetch();
    echo $name; 
}

Maak dit enige effek hê?

Ander wenke

NUM_ROWS is nie 'n metode, dit is 'n eiendom.

Dit lyk nie soos jy $ naam het verklaar.

Ook, probeer die verwydering van bind_result () haal () so dit lees iets soos hierdie:

$statement->execute();

$statement->store_result();

printf("Number of rows: %d.\n", $statement->num_rows);
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top