【问题标题】:mysqli procedural prepared statementsmysqli 程序准备语句
【发布时间】:2013-10-22 02:58:35
【问题描述】:

我正在尝试从经典 mysql 传递到 mysqli..

我选择使用过程方式而不是面向对象,尽管我在面向对象的方式中找到了更多的例子..

我需要编写一部分代码,在验证方面我将检查一个值是否已经在数据库记录中。

我已经来到这部分代码,它确实有效,但我不太确定,如果我遗漏了某些部分,或者我是否包含了不必要的语句..

$con = mysqli_connect("localhost","username","password","db");
// Check connection
if (mysqli_connect_errno($con)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$stmt = mysqli_prepare($con, "SELECT email FROM table WHERE email= ? ");
mysqli_stmt_bind_param($stmt, 's', $email);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($result);
mysqli_stmt_store_result($stmt);
if (mysqli_stmt_num_rows($stmt) > 0) { 
         some code
        }
     else {
         some other code
      }

我最关心这两行

    mysqli_stmt_bind_result($result);
mysqli_stmt_store_result($stmt);

尤其是

    mysqli_stmt_bind_result($result);

感觉没有必要,而

mysqli_stmt_store_result($stmt);

根据php.net似乎是必要的,临时存储似乎是必要的..

【问题讨论】:

    标签: php mysqli sql-injection procedural


    【解决方案1】:

    我认为你也不需要,真的。您应该能够使用mysqli_stmt_get_result 获取结果集,然后使用常规结果集函数(即mysqli_fetch_assoc

    【讨论】:

    • 我尝试了 mysqli_stmt_get_result 但页面会在没有明显原因的情况下中断..我找到了有关服务器缺少插件的参考?我不确定..
    • 你使用的是mysqlnd驱动吗?在phpinfo() 输出中查找mysqli 块。记下客户端 API 版本是什么。它应该说 mysqlnd
    • 您能否详细说明一下,我应该检查什么以及如何检查?
    • 像我说的那样检查phpinfo() 输出。如果您想了解有关mysqlnd 的更多信息,可以查看手册。 php.net/manual/en/book.mysqlnd.php
    • 我运行了 phpinfo() 并且在配置命令部分中是这个 '--with-mysqli=shared,mysqlnd' '
    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 2012-12-01
    • 2012-02-02
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多