- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 php 学习程序风格的初学者。学习编写Statements和Mysqli。
我正在尝试学习如何检查获取行是否成功或有问题。注意:我不是在查询我的 mysql 数据库中的关键字后检查是否有匹配的行。不。要搜索搜索结果,您通常使用 mysqli_stmt_num_rows()。但我使用 COUNT 函数。像这样:
$query = "SELECT COUNT(id) From links WHERE keyword = ?";
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$query))
{
mysqli_stmt_bind_param($stmt,'s',$keyword);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt,$row_count);
if($result = mysqli_stmt_fetch($stmt))
{
echo 'Row Count: ' .$row_count; echo '<br>';
}
else
{
echo 'Record fetching failed!';
echo 'Error: ' .mysqli_stmt_error($conn);
echo 'Error: ' .mysqli_stmt_errno($conn);
}
mysqli_stmt_close($stmt);
}
else
{
echo 'Search Preparation Failed!';
}
mysqli_close($conn);
我只需要检查行是否被提取没有任何问题。需要知道在尝试获取它们时是否有任何问题。如果有任何麻烦,那么麻烦是什么。我需要 php 来告诉我这个。
<?php
//5.
//MULTIPLE RECORDS FETCHING - mysqli_stmt_get_result(): mysqli_fetch_array().
//ERROR REPORTING.
ini_set('display_errors','1');
ini_set('display_startup_errors','1');
error_reporting(E_ALL);
//MYSQLI CONNECTION.
//BAREBONE TEMPLATE.
mysqli_report(MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT);
$server = 'localhost';
$user = 'root';
$password = '';
$database = 'bruteforce';
if(!$conn = mysqli_connect("$server","$user","$password","$database"))
{
echo 'Mysqli Connection Error' .mysqli_connect_error($conn);
echo 'Mysqli Connection Error Number' .mysqli_connect_errno($conn);
}
mysqli_set_charset($conn,'utf8mb4');
//QUERY DATABASE.
$keyword = 'keywords';
$query = "SELECT id,date_and_time,domain,domain_email,ip,url,anchor,title,description,keyword,keyphrase From links WHERE keyword = ?";
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$query))
{
mysqli_stmt_bind_param($stmt,'s',$keyword);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
while($col = mysqli_fetch_array($result,MYSQLI_NUM))
{
$id = $col['0'];
$url = $col['5'];
$title = $col['7'];
$description = $col['8'];
$keyword = $col['9'];
echo 'Id: ' .$id; echo '<br>';
echo 'Url: ' .$url; echo '<br>';
echo 'Title: ' .$title; echo '<br>';
echo 'Description: ' .$description; echo '<br>';
echo 'Keyword: ' .$keyword; echo '<br>';
}
//WHICH ONE OF THESE 15 IFs BELOW ARE VALID ?
//if($col == FALSE) //Output: Record fetching failed!Error: Error: 0
//if($col === FALSE) //Output: Blank
//if(!$col) //Output: Record fetching failed!Error: Error: 0
//if(!$col = mysqli_fetch_array($result)) //Output: Record fetching failed!Error: Error: 0
//if(!$col == mysqli_fetch_array($result)) //Output: Blank
//if(!$col === mysqli_fetch_array($result)) //Output: Blank
//if($col != mysqli_fetch_array($result)) //Output: Blank
//if($col !== mysqli_fetch_array($result)) //Output: Blank
//if($col !=== mysqli_fetch_array($result)) //Output: Parse error: syntax error, unexpected '=' in ...
//if(mysqli_fetch_array($result) == FALSE)//Output: Record fetching failed!Error: Error: 0
//if(mysqli_fetch_array($result) === FALSE) //Output: Blank
if(!mysqli_fetch_array($result))//Output: Record fetching failed!Error: Error: 0
//if(mysqli_fetch_array($result) != FALSE) //Output: Blank
//if(mysqli_fetch_array($result) !== FALSE) //Output: Record fetching failed!Error: Error: 0---
//if(mysqli_fetch_array($result) !=== FALSE) //Output: Parse error: syntax error, unexpected '=' in ...
{
echo 'Record fetching failed!';
echo 'Error: ' .mysqli_stmt_error($stmt);
echo 'Error: ' .mysqli_stmt_errno($stmt);
}
mysqli_stmt_close($stmt);
}
mysqli_close($conn);
?>
我知道有不止一种方法可以检查获取数据是否成功或不使用 mysqli。我正在尝试 15 种不同的方法来查看“mysqli_fetch_array($result,MYSQLI_NUM)”是否有效。我在我测试的 15 行中的每一行的注释上写下了我的实验结果。请注意我的代码底部附近的 15 个 IF,并指出这 15 个中所有有效的 IF。这样,我学到的编码方式不止一种。
//if($col == FALSE) //Output: Record fetching failed!Error: Error: 0
//if($col === FALSE) //Output: Blank
//if(!$col) //Output: Record fetching failed!Error: Error: 0
//if(!$col = mysqli_fetch_array($result)) //Output: Record fetching failed!Error: Error: 0
//if(!$col == mysqli_fetch_array($result)) //Output: Blank
//if(!$col === mysqli_fetch_array($result)) //Output: Blank
//if($col != mysqli_fetch_array($result)) //Output: Blank
//if($col !== mysqli_fetch_array($result)) //Output: Blank
//if($col !=== mysqli_fetch_array($result)) //Output: Parse error: syntax error, unexpected '=' in ...
//if(mysqli_fetch_array($result) == FALSE)//Output: Record fetching failed!Error: Error: 0
//if(mysqli_fetch_array($result) === FALSE) //Output: Blank
if(!mysqli_fetch_array($result))//Output: Record fetching failed!Error: Error: 0
//if(mysqli_fetch_array($result) != FALSE) //Output: Blank
//if(mysqli_fetch_array($result) !== FALSE) //Output: Record fetching failed!Error: Error: 0---
//if(mysqli_fetch_array($result) !=== FALSE) //Output: Parse error: syntax error, unexpected '=' in ...
我检查了很多教程。他们通常会展示这样的东西(达曼也展示过):
if(mysqli_stmt_prepare($stmt,$query))
{
mysqli_stmt_bind_param($stmt,'s',$keyword);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt))
while($col = mysqli_fetch_array($result,MYSQLI_NUM))
{
$id = $col['0'];
$url = $col['5'];
$description = $col['8'];
$keyword = $col['9'];
echo 'Id: ' .$id; echo '<br>';
echo 'Url: ' .$url; echo '<br>';
echo 'Description: ' .$description; echo '<br>';
echo 'Keyword: ' .$keyword; echo '<br>';
}
mysqli_stmt_close($stmt);
}
mysqli_close($conn);
请注意,在教程中,他们没有类似以下内容来检查 mysqli_stmt_get_result() 或 mysqli_fetch_array() 是否失败。
if(!$result = mysqli_stmt_get_result($stmt))
if(!mysqli_fetch_array($result))
但我仍然想检查这两行是否有问题。
//if($result == FALSE) //Output: Blank
//if($result) === FALSE //Output: Parse error: syntax error, unexpected '===' (T_IS_IDENTICAL) in ..
//if(!$result) //Output: Blank
//if(!$result = mysqli_stmt_get_result($stmt)) //Output: Record fetching failed!Error: Error: 0
//if(!$result == mysqli_stmt_get_result($stmt)) //Output: Record fetching failed!Error: Error: 0
//if(!$result === mysqli_stmt_get_result($stmt)) //Output: Record fetching failed!Error: Error: 0
//if($result != mysqli_stmt_get_result($stmt)) //Output: Blank
//if($result !== mysqli_stmt_get_result($stmt)) //Output: Blank
//if($result !=== mysqli_stmt_get_result($stmt)) //Output: Parse error: syntax error, unexpected '=' in ...
//if(mysqli_stmt_get_result($stmt) == FALSE)//Output: Record fetching failed!Error: Error: 0
//if(mysqli_stmt_get_result($stmt) === FALSE) //Output: Record fetching failed!Error: Error: 0
这是脚本的新上下文:
<?php
//5.
//MULTIPLE RECORDS FETCHING - mysqli_stmt_get_result(): mysqli_fetch_array().
//ERROR REPORTING.
ini_set('display_errors','1');
ini_set('display_startup_errors','1');
error_reporting(E_ALL);
//MYSQLI CONNECTION.
//BAREBONE TEMPLATE.
mysqli_report(MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT);
$server = 'localhost';
$user = 'root';
$password = '';
$database = 'brute';
if(!$conn = mysqli_connect("$server","$user","$password","$database"))
{
echo 'Mysqli Connection Error' .mysqli_connect_error($conn);
echo 'Mysqli Connection Error Number' .mysqli_connect_errno($conn);
}
mysqli_set_charset($conn,'utf8mb4');
//QUERY DATABASE.
$keyword = 'keywordsd';
$query = "SELECT id,date_and_time,domain,domain_email,ip,url,anchor,title,description,keyword,keyphrase From links WHERE keyword = ?";
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$query))
{
mysqli_stmt_bind_param($stmt,'s',$keyword);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
//WHICH OF THESE FOLLOWING IFs ARE VALID ?
//if($result == FALSE) //Output: Blank
//if($result) === FALSE //Output: Parse error: syntax error, unexpected '===' (T_IS_IDENTICAL) in ..
//if(!$result) //Output: Blank
//if(!$result = mysqli_stmt_get_result($stmt)) //Output: Record fetching failed!Error: Error: 0
//if(!$result == mysqli_stmt_get_result($stmt)) //Output: Record fetching failed!Error: Error: 0
//if(!$result === mysqli_stmt_get_result($stmt)) //Output: Record fetching failed!Error: Error: 0
//if($result != mysqli_stmt_get_result($stmt)) //Output: Blank
//if($result !== mysqli_stmt_get_result($stmt)) //Output: Blank
//if($result !=== mysqli_stmt_get_result($stmt)) //Output: Parse error: syntax error, unexpected '=' in ...
//if(mysqli_stmt_get_result($stmt) == FALSE)//Output: Record fetching failed!Error: Error: 0
//if(mysqli_stmt_get_result($stmt) === FALSE) //Output: Record fetching failed!Error: Error: 0
{
die('mysqli_stmt_get_result() Failed!);
}
else
{
while($col = mysqli_fetch_array($result,MYSQLI_NUM))
{
$id = $col['0'];
$url = $col['5'];
$description = $col['8'];
$keyword = $col['9'];
echo 'Id: ' .$id; echo '<br>';
echo 'Url: ' .$url; echo '<br>';
echo 'Description: ' .$description; echo '<br>';
echo 'Keyword: ' .$keyword; echo '<br>';
}
mysqli_stmt_close($stmt);
}
}
mysqli_close($conn);
echo '<b>'; echo __LINE__; echo '</b>'; echo '<br>';
?>
最佳答案
你的问题并不像人们想象的那么愚蠢。但是, 的可能性极小。获取 结果会失败。我曾尝试自己使此功能崩溃,但我始终无法实现。
这不太可能,我建议不要担心它。只要您正确编写整个内容,代码就不会失败。如果你想彻底,可以调用mysqli_error()
调用 mysqli_fetch_array
后立即看看是否有错误。 自动错误报告甚至没有涵盖这种情况,但万一出现问题 PHP 会显示警告 .如果您曾经看到“读取一行时出错”的警告,那么您很可能在 PHP 中发现了一个尚未发现的错误,而不是其他任何错误。
所以,不要再担心这个功能了。
附言你的代码充满了 cargo 崇拜的做法。根据经验,如果您启用了 mysqli 错误报告,那么您不需要检查任何函数的返回值。如果发生错误,PHP 会自动触发。函数调用失败且没有错误的可能性仍然很小,但是您不太可能在代码中不必担心它。
这是同样的事情,但没有任何冗余代码进行清理:
<?php
//5.
//MULTIPLE RECORDS FETCHING - mysqli_stmt_get_result(): mysqli_fetch_array().
//ERROR REPORTING.
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
//MYSQLI CONNECTION.
//BAREBONE TEMPLATE.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$server = 'localhost';
$user = 'root';
$password = '';
$database = 'bruteforce';
$conn = mysqli_connect($server, $user, $password, $database);
mysqli_set_charset($conn, 'utf8mb4');
//QUERY DATABASE.
$keyword = 'keywords';
$query = "SELECT id,date_and_time,domain,domain_email,ip,url,anchor,title,description,keyword,keyphrase From links WHERE keyword = ?";
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, 's', $keyword);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
while ($col = mysqli_fetch_row($result)) {
$id = $col[0];
$url = $col[5];
$title = $col[7];
$description = $col[8];
$keyword = $col[9];
echo 'Id: ' .$id;
echo '<br>';
echo 'Url: ' .$url;
echo '<br>';
echo 'Title: ' .$title;
echo '<br>';
echo 'Description: ' .$description;
echo '<br>';
echo 'Keyword: ' .$keyword;
echo '<br>';
}
关于php - 如何检查 mysqli_fetch_array($result,MYSQLI_NUM) 是否成功获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67502698/
我正在使用 jQuery 的 $.ajax 函数来提交表单,它可以工作,但成功正是我遇到问题的地方。这是我的代码: $("#form").submit(function () { $.
我正在使用动态分页。 我需要在开始另一个事件之前取消 jQuery ajax 中的 success 事件。 我已经设置了一个等于$.ajax()的变量,在这样做之前,无论如何我都会调用abort。 问
如果我错了,请纠正我,但我对 $.post 成功/失败的理解是,如果 url 有效,这将返回成功。唯一会返回失败的情况是 url 无效。 如果这是真的,我如何验证成功函数?我问的原因是无论发生什么,即
HANDLE hFile = CreateFile(LPCTSTR("filename"), // name of the write
我正在使用以下代码发送短信。但这似乎不会在未发送短信时产生异常。例如,当没有足够的钱发送时,我仍然会去 smsSucces();有没有人知道解决此问题的方法以确保它已发送? private b
我正在尝试将字符串转换为 DateTime,在一台计算机上,它工作正常,但在另一台计算机上,它却不行!它运行的计算机运行的是 32 位 Windows 7,它不运行的计算机运行的是 64 位 Wind
我在页面上使用表单让用户输入将用于各种目的的图像的 url。我正在编写一个 ajax 方法来确定他们提供的 url 是否实际上是图像。到目前为止,我已经这样做了: $(document).on('re
我在 jquery 中对 php 脚本进行 ajax 调用。但是 php 脚本需要返回什么才能触发 ajax 中的成功/错误处理程序。所以这是 ajax: $.ajax({ data:
几个简单的问题: 对于 native 和 Flash/Silverlight 垫片来说,成功事件是“规范化”事件吗?记录的示例表明它仅适用于 Flash/Silverlight 对象准备就绪的情况。
这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the h
我尝试使用新的 Groovy Grape Groovy 1.6-beta-2 中的功能,但我收到一条错误消息; unable to resolve class com.jidesoft.swing.J
我正在使用 sequelize/nodejs/express/react 将实体持久化到 postgres 数据库 我有两个主要模型,国家和事件,我正在使用该应用程序,并且有一个名为“保存到数据库”的
我有以下代码,其中有 2 个电子邮件输入字段,我需要验证它们是否相同,并且使用 jQuery validate equalTo 成功运行。 Email Address
我正在尝试找出解决此问题的正确方法。 假设我们有一家元素商店。这些项目可以编辑、删除和创建。编辑或添加项目时,路线更改为/item/add 或/item/edit/{id}。 在 saga 成功添加或
这个问题已经有答案了: How do I return the response from an asynchronous call? (42 个回答) 已关闭 8 年前。 我有这段代码,警报工作正常
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
我想在单击超链接 (.remove_resort) 时(成功的 ajax 调用后)删除超链接的(父)跨度。 虽然ajax调用成功,但是最后span并没有被移除。这里出了什么问题? 请记住:有几个类
我正在编写一个非常简单的程序来将鼠标剪辑到指定的窗口。它从系统托盘运行,没有可见窗口。由于同一窗口会有多个实例,因此它使用 EnumWindows() 迭代每个顶级窗口,并将它们的 hwnd 与 Ge
我正在尝试找出如何执行 if 语句,以便如果玩家的击球率超过 0.250,则会为成功的 tr 添加一个类别。 我发现了以下堆栈问题,但我不确定可以使用或应该使用哪种方式以及如何使用这些堆栈问题。 ht
我是 Prolog 的新手,我正在尝试解决这个练习: Define a predicate greater_than/2 that takes two numerals in the notation
我是一名优秀的程序员,十分优秀!