-1

在一个函数中,我想使用一个 if 语句来查找一个 mysqlibind_result()变量if($qandaReplyType == 'Single'){,但是在尝试这个时我得到了一个未定义的变量。我查看了一些 SO 示例,但我不明白如何正确实现它。所以我的问题是,有人可以提供一个代码片段以便能够修复错误,还可以让我了解如何在函数中检索 mysqli 变量以供将来使用,并让我充分了解它应该如何书面。

代码:

$qandaquery = "SELECT q.QuestionId ReplyType
                            FROM QuestionId q
                            INNER JOIN Reply r ON q.ReplyId = r.ReplyId

        ...

            $qandaqrystmt->bind_result($qandaQuestionId,$qandaReplyType);

            $arrReplyType = array();


            while ($qandaqrystmt->fetch()) {

            $arrReplyType[ $qandaQuestionId ] = $qandaReplyType;
          }

            $qandaqrystmt->close();


        function ExpandOptionType($option) { 

        ...

             foreach($options as $indivOption) {

                 if($qandaReplyType == 'Single'){

        ...

                 }
                 else if ($qandaReplyType == 'Multiple'){

        ...
             }
          }

        }

试图:

var $reply;
function ExpandOptionType($qandaReplyType) { 
    $this->reply = $qandaReplyType; 


         if($qandaReplyType == 'Single'){
...     

}
 }else if($qandaReplyType == 'Multiple'){
...     }
}
}
4

2 回答 2

2

自从我上次使用 mysqli 以来已经很长时间了,但我会尽力帮助你。从您发布的代码中很难理解您是在脚本中,在班级中还是在多个班级中。.

如果您在上课,请不要忘记使用 $this。绑定意味着您传递变量指针/引用,根据您的喜好调用它,而不是值,因此您从循环退出的位置指针设置为空位置。特别是在关闭声明之后。

仅当您想将结果传递给函数或更一般地传递​​给代码块时,才应使用变量绑定,该代码块将从接收的开始计算新值(是否返回新值无关紧要)。在这种情况下,我真的邀请您直接处理绑定的结果,否则您应该通过值而不是通过引用传递它们。

希望这有帮助。

马可

于 2013-02-13T01:16:55.707 回答
1

以下是如何$this将变量从一种方法转移到另一种方法。

class database {

     function do_query($id) {

          $result = db("SELECT * FROM tbl WHERE id=?", $id);

          $this->shared_result[] = $result["column"];
        # ^^^^^^^
     }


     function expand_evil($options) {

         foreach ($options as $whatever) {

             if ("Unicorn" == $this->shared_result) {
                            # ^^^^^^^
                ...
             }

         }
     }
}

评论将不予回复。教程确实存在。

于 2013-02-13T03:39:01.820 回答