1

据我了解,使用准备好的语句的好处是可以防止 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 中给出

4

1 回答 1

1

我想你正在寻找mysqli_stmt_num_rows结合mysqli_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 );
?>
于 2013-02-21T00:19:15.250 回答