我正在学习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中给出的对象
感谢您的帮助。
答案 0 :(得分: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 );
?>