使用mysqli_stmt_bind_result时在哪一行检查取数据是否成功?

2023-12-01

我需要向网站访问者表明,如果他对我的数据库进行查询在技术上失败,就会出现问题。 想要让 php 代码回显“抱歉!出了问题!”如果由于某种原因数据获取失败。

以下是我试图实现这一目标的一些方法。 3 个样品。 它们会导致无休止的循环,从而使我的浏览器崩溃。 (注意每个样本的 IF。这是 3 个样本的不同之处)。

我按照最喜欢的顺序对它们进行排名...... 如何解决这个问题以达到我的目的?希望代码示例。我知道如何使用 mysqli_stmt_get_result() 实现此目的,但需要在过程式编程中学习 mysqli_stmt_bind_result() 。还没有进入oop。也没有pdo。

1.

<?php

//LOOPS NEVERENDING

$server = 'localhost';
$user = 'root';
$password = '';
$database = 'brute';

$conn = mysqli_connect("$server","$user","$password","$database");

$keywords = 'keyword';

$query = 'SELECT id,domain from links WHERE keywords = ?';
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$query))
{
    mysqli_stmt_bind_param($stmt,'s',$keywords);
    if(mysqli_stmt_execute($stmt))
    {
        while($result = mysqli_stmt_bind_result($stmt,$id,$domain))
        {
            mysqli_stmt_fetch($stmt);
            
            echo 'Id: ' .$id; echo '<br>';
            echo 'Domain: ' .$domain; echo '<br>';
            
            if(!$result)
            {
                echo 'Sorry! Something went wrong. Try again later.';
            }
        }
    }
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
}

?>
<?php

//LOOPS NEVERENDING

$server = 'localhost';
$user = 'root';
$password = '';
$database = 'brute';

$conn = mysqli_connect("$server","$user","$password","$database");

$keywords = 'keyword';

$query = 'SELECT id,domain from links WHERE keywords = ?';
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$query))
{
    mysqli_stmt_bind_param($stmt,'s',$keywords);
    mysqli_stmt_execute($stmt);
    
    while(mysqli_stmt_bind_result($stmt,$id,$domain))
    {
        if(mysqli_stmt_fetch($stmt)) //If 'Rows Fetching' were successful.
        {
            echo 'Id: ' .$id; echo '<br>';
            echo 'Domain: ' .$domain; echo '<br>';
        }
        else //If 'Rows Fetching' failed.
        {
            echo 'Sorry! Something went wrong. Try again later.';
        }
    }       
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
}

?>
<?php

//LOOPS NEVERENDING

$server = 'localhost';
$user = 'root';
$password = '';
$database = 'brute';

$conn = mysqli_connect("$server","$user","$password","$database");

$keywords = 'keyword';

$query = 'SELECT id,domain from links WHERE keywords = ?';
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$query))
{
    mysqli_stmt_bind_param($stmt,'s',$keywords);
    if(mysqli_stmt_execute($stmt)) //If 'Query Execution' was successful.
    {
        while(mysqli_stmt_bind_result($stmt,$id,$domain))
        {
            mysqli_stmt_fetch($stmt);
            
            echo 'Id: ' .$id; echo '<br>';
            echo 'Domain: ' .$domain; echo '<br>';
        }       
    }
    else //If 'Query Execution' failed.
    {
        echo 'Sorry! Something went wrong. Try again later.';
    }
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
}

?>


基本上,所有的方法都是错误的。如果查询失败,只要您启用了错误报告,PHP 就会自动触发错误,请参阅如何获取 MySQLi 中的错误消息?。您不应该手动检查它。您的代码比需要的要长得多。考虑一下应该如何正确完成:

<?php

$server = 'localhost';
$user = 'root';
$password = '';
$database = 'brute';

// enable error reporting
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = mysqli_connect($server, $user, $password, $database);
mysqli_set_charset($conn, 'utf8mb4');

$keywords = 'keyword';

$query = 'SELECT id,domain from links WHERE keywords = ?';
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, 's', $keywords);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $id, $domain);

// This loop will keep on going as long as fetch() returns true.
// It will return false when it reaches the end
while (mysqli_stmt_fetch($stmt)) {
    echo 'Id: ' .$id;
    echo '<br>';
    echo 'Domain: ' .$domain;
    echo '<br>';
}

当您启用 mysqli 错误报告时,您的代码将变得更加简单。不需要向用户发送任何特殊消息。当查询失败时,将像任何其他 PHP 错误一样触发错误并以相同的方式处理。如果您愿意,您可以自定义错误页面,但这是一个完全独立的主题。

循环开启mysqli_stmt_fetch()用于从服务器获取数据。数据会逐行读取,当没有更多行时mysqli_stmt_fetch()将返回 false。

mysqli_stmt_bind_result()只需要调用一次。其目的是提供将填充数据的变量占位符。

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

使用mysqli_stmt_bind_result时在哪一行检查取数据是否成功? 的相关文章

  • 递归获取数组的键并创建下划线分隔的字符串

    现在我得到了一个包含某种信息的数组 我需要从中创建一个表 例如 Student Address StreetAddress gt Some Street StreetName gt Some Name Marks1 gt 100 Marks
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • Zend Framework 生成唯一的字符串

    我想生成一个唯一的 4 6 个字符长的字母数字字符串 以便与每个记录 用户 一起保存在数据库中 db 字段具有唯一索引 因此尝试保存预先存在的字符串会生成错误 现在我正在生成一个随机字符串并使用 try catch 因此在添加新记录时如果抛
  • PHP 如何判断用户是否按下了 Enter 键或 Submit 按钮?

    我遇到的问题是我在一个表单中有多个提交输入 每个提交输入都有不同的值 我更愿意将它们保留为提交 Whenever the user presses Enter it is as though the topmost submit input
  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • 在 Node 服务器上运行 Matter.js

    我正在尝试运行一个在服务器上运行物理模拟的服务器 并让客户端通过 websockets socket io 连接到该服务器 我知道我可以使用 Matter js 与渲染分开计算引擎 所以我的问题是 如何将引擎数据发送给客户端 我有一个Gam
  • 如何根据用户的不同让我的机器人在不同的对话框中启动

    基本上 我希望使用 iframe 和 Bot Framework Web Chat 将我的机器人放在不同的页面上 根据用户打开机器人的页面 会调用不同的对话框 如果没有 Direct Line 这就像向 api messages 添加查询参
  • Android AudioRecord 初始化失败

    我在使用 Android 版 AudioRecord 时遇到问题 我已经在网上阅读了尽可能多的内容 但我似乎无法获得良好的初始化 我尝试过 Android 2 2 模拟器 1 5 模拟器和我的手机 运行 Froyo 的 HTC Incred
  • 如何在 C# 中以编程方式启用强大的私钥保护?

    使用 C 以编程方式添加 X509Certificate2 时 如何实现相当于在 certmgr msc 中设置 强私钥保护 复选框的效果 您必须设置X509KeyStorageFlags相应地 当导入证书 i e MachineKeySe
  • 限制某些 iOS 目标设备进行 App Store 提交

    由于在 iPhone 4 硬件上运行出现问题 我的 iTunes App Store 提交被退回 基本上 该应用程序的编写目的是将所有网络活动转移到后台线程 以便 UI 在等待服务器响应慢速 蜂窝 数据连接时不会锁定 这在 iPad 2 i
  • 我应该始终使用视图模型还是可以使用 ViewData?

    您认为什么时候使用 ViewData 比视图模型更好 我在几个主要视图中有完全相同的部分视图 我想控制部分视图的呈现方式 但我也更喜欢部分视图只接受视图模型 该视图模型是记录的集合 只是一个纯粹的IEnumerable lt gt 目的 我
  • C 指针语法

    这两行代码有什么区别呢 int ptr x and void q x int p q 我对 C 和指针的概念非常陌生 主要是在 Java 中教授的 所以有点困惑 提前致谢 void 用于表示 C 中的通用指针 这意味着它可以指向任何类型 所
  • Windows下在Eclipse SWT中使用64位XulRunner

    是否可以使用 64 位 XulRunner for Windows 可以从这里获得 与 Eclipse 浏览器小部件 它在 32 位 Windows 下运行良好 答案是这个问题解释了这是如何工作的 但是当我在 64 位 Windows 下尝
  • R h2o 服务器 CURL 错误,有点可重复

    起初我以为这是一个随机问题 但重新运行脚本又发生了 Error in h2o doSafeREST h2oRestApiVersion h2oRestApiVersion urlSuffix urlSuffix Unexpected CUR
  • 如何在我的导航栏中将“nav”元素移动到“navbar-brand”下

    I using Bootstrap 4 and I set navbar brand to the center and all elements to the right side I want to set my nav element
  • 网页抓取视频

    我正在尝试通过下载 Bob s Burgers 的电视剧集来进行概念验证https www watchcartoononline com bobs burgers season 9 episode 3 tweentrepreneurs 我不
  • 使用 Apache POI 在 Excel 中创建条形图

    我正在尝试使用 Apache POI 在 XLSX 电子表格中创建条形图 但 Excel 一直提示内容有问题 并在我尝试打开文件时删除图表 这是我想要做的完整代码 public static void createBarChart Work
  • 如何允许我网站上的访问者在他们的 Facebook 新闻源上分享我的照片?

    如何允许我网站上的访问者在他们的 Facebook 墙 新闻源上分享我的照片 我看到 Facebook 有一个 分享 或 喜欢 选项 但似乎分享了整个页面 我希望每张图片旁边都有一个 Facebook 小图标 当他们单击它时 该特定图像只会
  • Android 5 Lollipop 中通知栏图标变白

    我有一个显示自定义通知的应用程序 问题是 在 Android 5 中运行时 通知栏中的小图标显示为白色 我怎样才能解决这个问题 接受的答案并不 完全 正确 当然 它使通知图标以颜色显示 但这样做有一个很大的缺点 将目标 SDK 设置为低于
  • Facebook-connect 提供重定向循环

    拜托 我需要帮助 我处理这个问题1个月了 我想使用 PHP 和 php sdk 3 1 1 实现 facebook 连接登录到我的网站 简而言之 我的代码可以离线工作 在本地主机上 但不能在线工作 这会导致 重定向循环太多 在 Chrome
  • 如何很好地处理[:-0]切片?

    在实现自相关函数时 我有一个像这样的术语 for k in range start N c k np sum f k f k N k 现在一切正常如果start 1但我想很好地处理开始0没有条件的情况 显然它不起作用 因为f 0 f 0 并
  • Linux 内核中哪里可以找到 TCP 数据(HTTP 下)?

    我正在尝试使用Linux内核中的TCP从HTTP流中读取数据 我能够从中获取大部分数据skb buff here 但是 如果服务器在没有请求的情况下将数据推送到客户端 则数据不会复制到用户空间 这样我就找不到它了 使用 Wireshark
  • 自定义订单排序

    您好 我想根据值 关键 高 中 低 对整个 C 列进行排序 我正在启用宏的工作表上运行此代码 这是我的代码 Sub run Range C C Sort Key1 Range C1 SortOn xlSortOnValues Order x
  • 如何在SSIS控制流任务中创建临时表,然后在数据流任务中使用它?

    我有一个控制流 我在其中使用 T SQL 命令创建临时数据库和表 当我添加数据流时 我想查询该表 但我不能 因为该表不存在可从中获取信息 当我尝试时 我收到有关登录的错误 因为数据库尚不存在 我有延迟验证为真 如果我手动创建数据库和表 然后
  • 使用mysqli_stmt_bind_result时在哪一行检查取数据是否成功?

    我需要向网站访问者表明 如果他对我的数据库进行查询在技术上失败 就会出现问题 想要让 php 代码回显 抱歉 出了问题 如果由于某种原因数据获取失败 以下是我试图实现这一目标的一些方法 3 个样品 它们会导致无休止的循环 从而使我的浏览器崩