我写这个函数错了吗?谁能告诉我我在哪里弄错了?

时间:2015-03-12 12:01:41

标签: php mysql mysqli

以下是功能:

 <?php
 $connect = mysqli_connect('localhost','root','test123','joomla');

 function parseDescription($id)
 {
    $sql = "SELECT raw_description FROM n0dap_jevents_vevdetail WHERE evdet_id='$id'";
            $result=mysqli_query($connect,$sql);
            if (mysqli_num_rows($result) > 0)
            {
            return mysqli_fetch_array($result);
            }
     }              
     ?>

以下是错误:

注意:未定义的变量:在第6行的C:\ xampp \ htdocs \ Try \ includes \ function.inc.php中连接

警告:mysqli_query()要求参数1为mysqli,在第6行的C:\ xampp \ htdocs \ Try \ includes \ function.inc.php中给出null

警告:mysqli_num_rows()要求参数1为mysqli_result,在第7行的C:\ xampp \ htdocs \ Try \ includes \ function.inc.php中给出null

如果我转换所有这些Mysql而不是Mysqli它可以工作,但然后我所有的正则表达式都搞砸了。我已经在这几个小时了,这几乎告诉你我是一个新手,真的可以使用一些帮助。

2 个答案:

答案 0 :(得分:2)

正如评论中所述,您的connect变量是在函数范围之外定义的,因此它无法使用它。您需要将该变量作为参数传递给您的函数:

 $connect = mysqli_connect('localhost','root','test123','joomla');

 function parseDescription($id, $connect)
 {
    // Your connection code
 }              

答案 1 :(得分:1)

这可能比常规函数式编程有点困难,但oop是管理代码的好方法..

这里我将$ connect声明为类

私有变量

如果需要有关oop ..

的任何进一步帮助,请与我们联系
<?php

class MyClass
{
    private $connect;
    function __construct()
    {
        $this->connect = mysqli_connect('localhost', 'root', 'test123', 'joomla');
    }

    function parseDescription($id)
    {
        $sql = "SELECT raw_description FROM n0dap_jevents_vevdetail WHERE evdet_id='$id'";
        $result = mysqli_query($this->connect, $sql);
        if (mysqli_num_rows($result) > 0)
        {
            return mysqli_fetch_array($result);
        }
        else
        {
            return false;
        }
    }

}

$object = new MyClass();
$answer = $object->parseDescription($id);
if($answer)
{
  // do your stuff here
}
?>