PHP-MySQLi预准备语句

用户名
$name = $_GET['user'];
if(isset($_GET['user']) && strlen($_GET['user'])>0) {
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $db);
    $stmt = $mysqli->prepare("SELECT username FROM users WHERE username=?");
    $stmt->bind_param('s', $name);
    $stmt->execute();
    while($stmt->fetch()) {
        if($stmt->num_rows == 0) {
            header("Location: home?errormsg=notfound");
            exit();
        }
    }
    $stmt->store_result();
    $stmt->close();
}
$mysqli->close();

因此,上面的代码检查$ _GET ['name']是否存在于数据库中,如果不存在,则重定向到home?errormsg = notfound,但是它将数据库中存在的用户名重定向到链接“ home”。 errormsg = notfound”。您能提出解决此问题的方法吗?

马塞尔·巴尔泽(Marcel Balzer)

你必须调用$stmt->store_result()之前$stmt->num_rows

并且您$stmt->fetch()没有必要,因为您不使用所选数据。

如果您拨打电话store_result()num_rows无法使用。

手册页的部分评论

如果您不使用mysqli_stmt_store_result(),并且在执行准备好的语句后立即调用此函数,则该函数通常将返回0,因为它无法知道结果集中有多少行,因为结果集未保存在内存中然而。

因此,您的代码应如下所示:

$name = $_GET['user'];
if(isset($_GET['user']) && strlen($_GET['user'])>0) {
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $db);
    $stmt = $mysqli->prepare("SELECT username FROM users WHERE username=?");
    $stmt->bind_param('s', $name);
    $stmt->execute();
    $stmt->store_result();
    if($stmt->num_rows == 0) {
        header("Location: home?errormsg=notfound");
        exit();
    }
    $stmt->close();
}
$mysqli->close();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP-MySQLi预准备语句

来自分类Dev

PHP:预准备语句

来自分类Dev

PHP:预准备语句

来自分类Dev

在PHP中使用MySQLi预准备语句,获取“预准备语句中没有为参数提供数据”

来自分类Dev

PHP MySQLi准备的语句

来自分类Dev

PHP MySQLi预准备语句用“非标准”字符修饰字符串吗?

来自分类Dev

PHP MySQLi准备的语句-SELECT

来自分类Dev

PHP MySQLi准备的语句-SELECT

来自分类Dev

PHP MySQLi准备的语句不起作用

来自分类Dev

PHP MySQLi准备的语句不起作用

来自分类Dev

PHP:Mysqli准备的语句带有“选择*”

来自分类Dev

PHP预准备语句中的自定义where子句

来自分类Dev

如何避免用PHP SQL预准备语句重复代码?

来自分类Dev

PHP中的预准备语句不绑定结果

来自分类Dev

正确处理php中mysqli准备的语句中的数据

来自分类Dev

PHP绑定“ bigint”数据类型(MySQLi准备的语句)

来自分类Dev

PHP MySQLI在get_results()处准备的语句中断

来自分类Dev

查询使用SQL变量时Mysqli PHP准备的语句

来自分类Dev

PHP绑定“ bigint”数据类型(MySQLi准备的语句)

来自分类Dev

PHP MySQLi准备的语句fetch()返回'1'而不是查询结果

来自分类Dev

PHP mysqli为带out参数的存储过程准备了语句

来自分类Dev

PHP MySQLi为SELECT准备了语句(避免SQL注入)

来自分类Dev

在 PHP MySQLi 准备好的语句中结合 LIKE 和 IN

来自分类Dev

php mysqli在准备好的语句中重复字段

来自分类Dev

为 PHP 用户类创建 mySQLi 准备好的语句

来自分类Dev

在PHP的预准备语句中设置SQL变量不起作用

来自分类Dev

如何从带有PHP预准备语句的SQL Server存储过程中返回多个结果?

来自分类Dev

这是使用预准备的插入语句与oop php的正确方法吗?

来自分类Dev

如何在php中的Postgresql中使用白名单和预准备语句?

Related 相关文章

  1. 1

    PHP-MySQLi预准备语句

  2. 2

    PHP:预准备语句

  3. 3

    PHP:预准备语句

  4. 4

    在PHP中使用MySQLi预准备语句,获取“预准备语句中没有为参数提供数据”

  5. 5

    PHP MySQLi准备的语句

  6. 6

    PHP MySQLi预准备语句用“非标准”字符修饰字符串吗?

  7. 7

    PHP MySQLi准备的语句-SELECT

  8. 8

    PHP MySQLi准备的语句-SELECT

  9. 9

    PHP MySQLi准备的语句不起作用

  10. 10

    PHP MySQLi准备的语句不起作用

  11. 11

    PHP:Mysqli准备的语句带有“选择*”

  12. 12

    PHP预准备语句中的自定义where子句

  13. 13

    如何避免用PHP SQL预准备语句重复代码?

  14. 14

    PHP中的预准备语句不绑定结果

  15. 15

    正确处理php中mysqli准备的语句中的数据

  16. 16

    PHP绑定“ bigint”数据类型(MySQLi准备的语句)

  17. 17

    PHP MySQLI在get_results()处准备的语句中断

  18. 18

    查询使用SQL变量时Mysqli PHP准备的语句

  19. 19

    PHP绑定“ bigint”数据类型(MySQLi准备的语句)

  20. 20

    PHP MySQLi准备的语句fetch()返回'1'而不是查询结果

  21. 21

    PHP mysqli为带out参数的存储过程准备了语句

  22. 22

    PHP MySQLi为SELECT准备了语句(避免SQL注入)

  23. 23

    在 PHP MySQLi 准备好的语句中结合 LIKE 和 IN

  24. 24

    php mysqli在准备好的语句中重复字段

  25. 25

    为 PHP 用户类创建 mySQLi 准备好的语句

  26. 26

    在PHP的预准备语句中设置SQL变量不起作用

  27. 27

    如何从带有PHP预准备语句的SQL Server存储过程中返回多个结果?

  28. 28

    这是使用预准备的插入语句与oop php的正确方法吗?

  29. 29

    如何在php中的Postgresql中使用白名单和预准备语句?

热门标签

归档