mySQLi 准备好的语句无法 get_result()

2024-03-15

我对 mySQLi 完全困惑了。尽管我多年来一直使用过程式 mysql 调用,但我想习惯于为其提供的数据库安全/mySQL 注入保护编写准备好的语句。我正在尝试编写一个简单的选择语句(是的,我知道为此进行过程调用可以增强性能)。跑步时,我得到所有的回声,直到我击中$result = $stmt->get_result();成分。这一切对我来说似乎相当简单,但在阅读了几个小时的 mySQLi 手册后我却不知所措。有什么想法为什么会失败吗?

*注意:这是一个测试环境,虽然没有进行字符清理/转义,但我仅将有效内容传递到变量 $username 和 $email 中。而且,我已经四处寻找以找到我的问题的解决方案。

function checkUsernameEmailAvailability($username, $email) {
    //Instantiate mysqli connection
    @$mysqli = new mysqli(C_HOST,C_USER,C_PASS,C_BASE) or die("Failed to connect to MySQL database...");
    if (!$mysqli)
    {
        echo 'Error: Could not connect to database.  Please try again later...';
        exit;
    } else {
        echo 'mysqli created';
    }

    /* Create a prepared statement */   
    if($stmt = $mysqli -> prepare("SELECT username,email FROM tb_users WHERE username=? OR email=?")) {
        echo '<br />MYSQLi: ';

        /* Bind parameters s - string, b - boolean, i - int, etc */
        $stmt -> bind_param("ss", $username, $email);
        echo '<br />paramsBound...';

        /* Execute it */
        $stmt -> execute();     
        echo '<br />Executed';

        $result = $stmt->get_result();
        echo '<br />Result acquired';

        /* now you can fetch the results into an array - NICE */
        $myrow = $result->fetch_assoc();
        echo '<br />Fetched';


        /* Close statement */
        /$stmt -> close();
        echo '<br />Done mysqli';
    }
}    

另外,每次调用函数时都必须实例化 mysqli 吗?我假设它们不是像程序 mysql 那样的持久数据库连接。是的,我知道这是一个范围问题,不,我无法理解此类变量的范围。当我在函数外部声明它时,当我进入函数时它不可用。

UPDATE如果我将第 12 行更改为:

if($stmt = $mysqli -> prepare("SELECT username,email FROM tb_users WHERE username=? OR email=?")) {

to:

    $stmt = $mysqli->stmt_init();
    if($stmt = $mysqli -> prepare("SELECT username,email FROM tb_users WHERE username=? OR email=?")) {
        if(!stmt) echo 'Statement prepared'; else echo 'Statement NOT prepared';

我收到声明未准备好。现在我更迷茫了......

UPDATE:


通过一些检查,即使我的主机上安装了 mysqli,但显然 mysqlnd 驱动程序不存在。因此,不能使用 get_result() (php 手册将 get_result 定义为依赖于 mysqlnd ),而是需要执行额外的编码来按照我想要的方式处理我的结果。

因此,我决定尝试学习 PDO 的工作原理,几分钟之内,瞧!

将上面的代码替换为:

function checkUsernameEmailAvailability($username, $email) {

echo 'pdo about to be created';

$dsn = 'mysql:dbname='.C_BASE.';host='.C_HOST;
$user = C_USER;
$password = C_PASS;

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

$params = array(':username' => $username, ':email' => $email);

try{
$sth = $dbh->prepare('SELECT username,email FROM tb_users WHERE username = :username OR email = :email ');
} catch(PDOException $e) {
    echo 'Prepare failed: ' . $e->getMessage();
}

try{
$sth->execute($params);
} catch(PDOException $e) {
    echo 'Execute failed: ' . $e->getMessage();
}
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
}

我能想到的尽可能多的错误检查,首先破解它根本没有问题!

最终代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mySQLi 准备好的语句无法 get_result() 的相关文章

  • 如何在 Zend Framework 3 中注册自定义表单视图助手

    我正在将继承的 Zend Framework 2 应用程序迁移到 Zend Framework 3 并且在注册自定义表单视图助手时遇到了一些困难 这些助手在应用程序使用版本 2 时起作用 主要用于添加标签属性以实现可访问性 例如 这是一个自
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • 如何在laravel中注册后自动登录

    我在 laravel 中注册用户时遇到问题 user假设是包含所有数组元素的数组 同时自动登录以下代码结果false 数据库中保存的密码是hash make password user id this gt user model gt ad
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • 为什么我的会话仍然存在?

    我一定很愚蠢 因为似乎一件相当明显的事情现在让我完全困惑 我有一个会议 ie SESSION handbag id 在某个时刻 我需要彻底终止这个会话 ie at the start of the page session start el
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中
  • setcookie with expire=0 浏览器关闭后不会过期

    我使用setcookie来制作一个过期 0的cookie 从 PHP 文档来看 link http php net manual en function setcookie php cookie 过期的时间 这是一个 Unix 时间戳 所以
  • 在服务器上找不到本地主机或 phpMyAdmin:如何修复?

    我按照安装说明进行操作PHP MySQL and PHPMyAdmin 但是当我尝试访问时http localhost phpmyadmin 我收到此错误 未找到 在此找不到请求的 URL phpmyadmin 服务器 然后我尝试访问loc
  • jQuery ajax 调用包含重音字符的 url 将错误的 Uri 从 IE 发送到服务器

    我在使用 IE 发送包含重音字符的 url 时遇到问题 这是一个简单的函数 function runjQueryTest var url test Beyonc get url function 在服务器 PHP 上我记录了请求uri的值
  • PHP MongoDb 驱动程序:如何设置执行代码的超时

    我有以下代码 它在 MongoDb 端执行一段代码 mongoCode new MongoCode Some JS code db gt execute mongoCode array socketTimeoutMS gt 1000000
  • Yii2 - 错误请求 (#400) |前端和后端cookie

    仅当我打开时才会出现此问题frontend and backend在相同的browser 设想 与后端交互 gt 切换选项卡 gt 与前端交互 gt 切换选项卡返回 gt 与后端交互 gt 错误请求 400 Cookie 后端 identi
  • 使用 PHP/linux 将文件合并为单个 PDF

    我正在研究如何将多个 PDF 合并为一个 PDF 我正在寻找一个图书馆可靠且坚固尽可能 最好有一个库可以保留书签 鬼脚本 http pages cs wisc edu ghost 可以在保存书签的位置进行连接 但我遇到了麻烦 在一种情况下它
  • 如何将表中不存在但原始SQL中存在的实体字段设置为别名?

    假设我们有一个这样的查询 SELECT CUSTOM EXPRESSION as virtualfield FROM users 用户的实体本身具有 虚拟字段 但映射注释没有 因为表没有该字段 假设它作为原始 SQL 执行 我们如何使用上面
  • Facebook API sdk 4.0 - 将照片发布到 Facebook

    我正在尝试创建一个应用程序 用户可以在其中浏览照片并将其从计算机提交到 Facebook 为此 他们首先必须将照片上传到服务器 然后使用 Facebook 请求将此图像发布到 Facebook 我正在使用多部分 表单数据 这就是我到目前为止
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • PHP 接口有属性吗?

    PHP 中的接口有属性 还是只有方法 您可以在 DocBlock 中为接口声明属性 然后 IDE 将提示接口的这些属性 PhpStorm 会这样做 但这不会强制在实现类中实际实现这些字段 例如 property string passwor
  • 字符串相似度的算法(比Levenshtein和similar_text更好)? php, Js

    在哪里可以找到比 levenshtein 和 phpimilar text 方法更准确地评估错误字符的拼写的算法 Example similar text jonas xxjon similar echo similar returns 6
  • PHP 中的 -> 和 :: 有什么区别?

    这个东西困扰我好久了 一直找不到 在 php 中使用 和 gt 之间的类有什么区别 让我举个例子 想象一个名为 MyClass 的类 该类中有一个函数 myFunction 使用有什么区别 MyClass myclass new MyCla
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess
  • 使用会话 php 创建 cookie?

    我使用会话来登录我网站中的用户 问题是 我想让用户remember密码 因此关闭 打开浏览器后他们不需要再次登录 我需要使用 cookie 和 session 来实现它吗 my code user POST user pass POST p

随机推荐

  • spring amqp-outbound gateway 生成来自不同 thead 的回复(如 jms-outbound gateway)

    问题陈述 Spring amqp outbound gateway 从不同线程生成回复 像 jms outbound gateway 一样 具有不同的队列 使用相关键关联请求 响应 无法将该消息与此示例关联起来 弹簧集成
  • Windows CreateFile 可能的错误代码

    我正在尝试将 Windows Linux 和 Mac 文件 IO 调用抽象为宏 以避免 C 运行时 所以没有fopen fclose ETC 我实际上做了很多工作 但遇到了绊脚石 我试图将每个平台可能抛出的所有可能错误归结为常见错误的子集
  • codeigniter 中的 allowed_uri_chars

    从 Facebook 返回时 使用 Facebook 登录 我收到错误 您提交的 URI 包含不允许的字符 我已将 allowed uri chars 设置如下 config permitted uri chars a z 0 9 我的网址
  • 在 Woocommerce 中以编程方式应用优惠券

    在 Woocommerce 中 如果购物车中的重量超过 100 磅 我试图找到一种对整个客户订单应用 10 折扣的方法 我正在实现这一目标 对于下一步 我正在寻找一种通过functions php 通过action hook 以编程方式应用
  • 在哪里可以找到 DownloadManager 的 ContentProvider 实现

    我已经尽可能多地搜索了android的开源代码 但我还没有找到通过2 3 SDK中的DownloadManager进行实际下载的实现 我已经找到了下载管理器的源 http grepcode com file repository grepc
  • 两个类之间的 iPhone KVO

    我的应用程序中有两个类 A 类和 B 类 A 类和 B 类都是 UIViewController 的实例 A 类有一个按钮 按下该按钮时会将 B 类推入堆栈 B 类有一个字符串 A 类希望观察该字符串并根据需要更新其接口 我已经能够使用 s
  • Java将“Excel日期序列号”转换为“日期时间”[重复]

    这个问题在这里已经有答案了 如何使用Java将 Excel日期序列号 即33257 415972222225 转换为DateTime 即19 01 1991 09 59 00 您还可以查看Apache POI 源代码 https githu
  • 如何用 swift 创建一个闹钟应用程序?

    我正在尝试用 swift 创建一种闹钟应用程序 但我不知道如何设置闹钟模型 我试过了UILocalnotification但我不希望我的用户除了设置闹钟之外参与闹钟应用程序的流程 然后尝试了NSTimer and NSRunloop等等 但
  • 相机插件 flutter web

    你好我想知道是否有一个用于 flutter web 的相机插件 以便拍摄照片并将其存储在临时路径中 然后将其上传到 firestorage 如果我理解正确 我希望您已经尝试过这些软件包 image picker 和 image picker
  • 如何在WP中将CookieContainer设置为BackgroundTransferRequest对象?

    我在用BackgroundTransferRequest and BackgroundTransferService用于上传一些数据 无论如何我可以设置CookieContainer to the TransferRequest None
  • @AutoConfigureWebMvc 和 @AutoConfigureMockMvc 有什么区别?

    在什么情况下我应该使用每一个 AutoConfigureWebMvc 如果您需要配置 Web 层进行测试但又不这样做 请使用此选项 需要使用MockMvc 它启用与 Web 层相关的所有自动配置ONLY网络层 这是整体自动配置的一个子集 它
  • 背景图片和搜索引擎优化

    目前 我的网站上有一些在 CSS 文件中定义为背景图像的图像 代码如下所示 HTML a href http domain com title Website Title class image a The CSS image backgr
  • 定义分段函数(例如多项式)

    在 C 中定义分段函数 例如在使用样条曲线时需要 的最佳方法是什么 Example f1 x if x from 0 5 f x f2 x if x from 5 10 f3 x if x from 10 20 我当前的方法如下所示 cla
  • 使用 lucene 模糊搜索和 Azure 搜索的同义词

    我希望能够同时处理模糊搜索和同义词 我尝试了多种方法 但无法使其正常工作 我的索引中有这些值 white black light dark 这个同义词规则 white light black dark 如果我执行查询queryType fu
  • 如何在android中以编程方式控制横向和纵向?

    我使用 android sdk 4 0 开发应用程序 并将该 apk 文件安装在我的三星选项卡中 当我运行该应用程序时 它工作正常 如果我将选项卡纵向更改为横向或相反 屏幕也会发生变化 但我的要求是 无论将模式更改为纵向还是横向还是横向还是
  • 使用 Quickbook 连接器和 Nodejs 进行 Quickbook(桌面)API 集成

    我是 Quickbooks 的新手 但我已经安装了 Quickbook Premier Desktop Edition 并拥有一个帐户以及 Quickbook 连接器 我正在尝试通过可用的 Quickbook 连接器将自定义应用程序中的发票
  • 类型错误:尝试更改数组列表的某些元素时,列表索引必须是整数,而不是元组

    我有一个 2 x n 的 x 和 y 坐标数组的列表 old array 1 2 3 4 5 6 array 10 20 30 40 50 60 我试图将 y 坐标 每个数组的第二行 移动某个值 shift 但是 当我尝试通过以下方法执行此
  • Phonegap 中的本地通知 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的 iOS Phonegap 应用程序中获得本地通知 我遵循了很多教程和代码 但没有帮助 任何人都可以指导我吗 None
  • 在循环中创建的 jQuery 事件处理程序

    所以我有一组这样的事件 slider 1 click function event switchBanners 1 true slider 2 click function event switchBanners 2 true slider
  • mySQLi 准备好的语句无法 get_result()

    我对 mySQLi 完全困惑了 尽管我多年来一直使用过程式 mysql 调用 但我想习惯于为其提供的数据库安全 mySQL 注入保护编写准备好的语句 我正在尝试编写一个简单的选择语句 是的 我知道为此进行过程调用可以增强性能 跑步时 我得到