mysqli_num_rows因准备好的语句,程序样式而失败

时间:2013-02-21 00:09:46

标签: mysqli prepared-statement

我正在学习Mysqli(来自Mysql)。

据我所知,使用预准备语句的优点是防止SQL注入。

我设法使用SELECT和INSERT构建了具有准备好的语句的查询。

但是为了达到相当于select count()的目标,我正撞在墙上 PHP手册给出了:

if ($result = mysqli_query($link, "SELECT Code, Name FROM Country ORDER BY Name")) {

    /* determine number of rows result set */
    $row_cnt = mysqli_num_rows($result);

    printf("Result set has %d rows.\n", $row_cnt);

    /* close result set */
    mysqli_free_result($result);
}

我也试着用准备好的声明来做这件事。但也许我不是吗?

这就是我正在尝试的方法:

$boy = 'yes';
$age   = 1;

$result = mysqli_prepare ($bdd, 'SELECT boy , age FROM photo WHERE  boy = ? AND age= ?' );

mysqli_stmt_bind_param( $result, "si", $boy , $age );
mysqli_stmt_execute( $result );

    $row_cnt = mysqli_num_rows( $result );
    printf( "Le jeu de résultats a %d lignes.\n", $row_cnt );

但无论我尝试什么

,我总会得到同样的错误

警告:mysqli_num_rows()要求参数1为mysqli_result,第36行的C:\ wamp \ www \ page.com \ pic.php中给出的对象

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找mysqli_stmt_num_rowsmysqli_stmt_store_result - http://www.php.net/manual/en/mysqli-result.num-rows.php

的结合
<?php
$boy = 'yes';
$age   = 1;

$result = mysqli_prepare ($bdd, 'SELECT boy , age FROM photo WHERE  boy = ? AND age= ?' );

mysqli_stmt_bind_param( $result, "si", $boy , $age );
mysqli_stmt_execute( $result );

// You may need this too...
mysqli_stmt_store_result( $result );

$row_cnt = mysqli_stmt_num_rows( $result );
printf( "Le jeu de résultats a %d lignes.\n", $row_cnt );
?>