PHP 函数没有正确执行?

标签 php mysql function forum

<分区>

我正在构建一个小型 PHP 论坛,允许用户创建帖子并对其发表评论。我有一个特定的功能,应该显示帖子的回复数量,由于某种原因只显示零。我也有一个类似的功能可以计算观看次数并且它运行良好,所以我不确定问题出在哪里。

回复功能代码如下:

  function countReplies($cid, $scid, $tid, $mysqli){
$select = mysqli_query($mysqli, "SELECT category_id, subcategory_id, topic_id FROM replies WHERE ".$cid." = category_id AND
                                ".$scid." = subcategory_id AND ".$tid." = topic_id");
return mysqli_num_rows($select);
}

我是这样调用它的:

<div class = "content">

disptopics($_GET['cid'], $_GET['scid'], $mysqli);
countReplies($_GET['cid'], $_GET['scid'], $_GET['tid'], $mysqli);

?>
</div>

我收到以下错误:

Notice: Undefined index: tid in C:\xampp\htdocs(A)Book 2.0\Bootstrap\topics.php on line 56

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs(A)Book 2.0\Bootstrap\content_function.php on line 110

我很确定我定义了变量 tid,因此非常感谢对此有任何见解。

最佳答案

错误另有说明,但“未定义索引”的事实意味着它正在尝试查找数组中的索引 tid,可能是 $_GET,而不是变量 $tid 本身。

发生这种情况时,您会得到一个无效的 SQL 语句,因为您实际上没有向条件传递任何内容,从而导致语法错误:

"SELECT category_id, subcategory_id, topic_id FROM replies 
 WHERE $cid = category_id AND $scid = subcategory_id AND = topic_id"

注意 subcategory_id AND = topic_id

为避免这种情况,您应该始终引用您的参数(这将起作用,因为 variable interpolation ):

"SELECT category_id, subcategory_id, topic_id FROM replies 
 WHERE '$cid' = category_id AND '$scid' = subcategory_id AND '$tid' = topic_id"

您仍然会得到错误的结果,但要避免其他级联错误。

但是,您应该在调用函数之前检查是否所有需要的参数都存在。当你在做的时候,你也应该Learn how to prevent SQL injection .

关于PHP 函数没有正确执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52798416/

相关文章:

ios - 在另一个类中调用函数的最佳方式是什么? ( swift )

function - 在 MATLAB 中迭代函数向量

php - var_dump (object) 的结果是什么意思?

php - file_get_content 和变量问题

php - 从 PHP 中的 m4a 文件中检索 ID3 信息

php - 在 PHP 中构建动态 sql 语句

PHP MySQL 与 Play Framework 兼容?

在 os x 内置将 php 升级到 7.1 后,MYSQL 无法在 mac 上的 MAMP 中运行

基于 PHP session 的购物车问题

JavaScript 如果计数