Jump to content


Photo

Fatal Error: cannot redeclare???


  • Please log in to reply
4 replies to this topic

#1 Cerberus_26

Cerberus_26
  • New Members
  • Pip
  • Newbie
  • 3 posts

Posted 24 February 2006 - 09:10 PM

I have a peculiar error message popping up that I don't know the answer to.

Fatal error: Cannot redeclare better_odbc_num_rows() (previously declared in add_info.php:2) in add_info.php on line 460

Now I understand why this error would be popping up if I had in fact declared the function twice, but I only declared it once. Also although I did declare the function in line 2, there is no line 460 in my code. It only goes to line 447. Also if I comment out this function then the error message pops up again with the next function in the file. Any help would be greatly appreciated in solving this issue.

#2 Caesar

Caesar
  • Members
  • PipPipPip
  • Advanced Member
  • 1,025 posts

Posted 24 February 2006 - 09:14 PM

Please provide some example code that we can look through.
PHP Ninja

#3 Cerberus_26

Cerberus_26
  • New Members
  • Pip
  • Newbie
  • 3 posts

Posted 27 February 2006 - 03:15 AM

Here is some of the code, the script parses through multiple xml files and adds the fields into a database.
<?php
function better_odbc_num_rows($con,$sql)
{
   $result = odbc_exec($con,$sql);
   $count=0;
   while($temp = odbc_fetch_into($result, &$counter)){
       $count++;
   }
   return $count;
}

function start_tag($parser, $name, $attribs) {
   global $current; 
   global $attributes;
   global $guid;
   
   $current = $name;
   if ($current == "TAG1")
           $guid = $attribs["ID"];
   
   if ($current == "PERSON")
           $attributes = $attribs["TYPE"];
}

function end_tag($parser, $name) {
       global $variables;
   
   if ($name == "TAG1")
   {
           $odbc = odbc_connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . str_replace("/", "\\", $_SERVER["DOCUMENT_ROOT"]) . "database.mdb", "", "") or die('Could Not Connect to ODBC Database!');
           
        $query = "SELECT * FROM Table1 WHERE ID = '$guid'";
        $rs = odbc_exec($odbc, $query);
        
                $count = better_odbc_num_rows($odbc, $query);
        if ($count != 1)
        {
            $query = "INSERT INTO QUERY";
            //$temp = $guid;
            
            $rs = odbc_exec($odbc, $query);
            if(!$rs)
            {
                echo "<script language=\"Javascript\">alert(\"There was an error inserting into the database, please try again\")</script>";
                exit();
            }
            
        }
        else
            echo "Duplicate Record Skipped...'$guid'<br />";
            
        odbc_close($odbc);
        
        
    }
  
}

.......
$dir = "path to folder with xml files";

                
// open directory and parse file list
if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        // iterate over file list
        // print filenames
        while (($filename = readdir($dh)) !== false)
        {
            if (! ($xmlparser = xml_parser_create()) )
            { 
                   die ("Cannot create parser");
            }
            
            xml_set_element_handler($xmlparser, "start_tag", "end_tag");

            xml_set_character_data_handler($xmlparser, "tag_contents");
            
            //echo $dir."/".$filename;
            if (($filename != ".") && ($filename != "..") && (substr($filename,strlen($filename-3),strlen($filename)) != "doc"))
            {
                if (!($fp = fopen($dir."/".$filename, "r"))) { die("cannot open ".$filename); }

                while ($data = fread($fp, 4096))
                {
                   $data=eregi_replace(">"."[[:space:]]+"."<","><",$data);
                   if (!xml_parse($xmlparser, $data, feof($fp))) 
                   {
                      $reason = xml_error_string(xml_get_error_code($xmlparser));
                      $reason .= " ".xml_get_current_line_number($xmlparser);
                      die($reason);
                   }
                }
                fclose($fp);
            }
            
            if (!(file_exists("path to processed xml files".substr($filename,0,15).".xml")) || !(file_exists("path to processed word docs".substr($filename,0,15).".doc")))
            {
                if (($filename != ".") && ($filename !=".."))
                {
                    if (substr($filename,strlen($filename-3),strlen($filename)) == "xml")
                    {
                        rename($dir."/".$filename, "path to processed xml".substr($filename,0,15).".xml") or die("Could not move .xml file");
                        $filecount++;
                    }
                    if (substr($filename,strlen($filename-3),strlen($filename)) == "doc")
                    {
                        rename($dir."/".$filename, "path to processed word docs".substr($filename,0,15).".doc") or die("Could not move .doc file");
                    }
                }
            }
            else if (($filename != ".") && ($filename !=".."))
            {
                unlink($dir."/".$filename);
            }
                
            xml_parser_free($xmlparser);
        }
// close directory
    closedir($dh);
    }
I can include more if needed. The function tag_contents Due to the sensitive nature of the material I've had to strip out alot of info such as variable names and queries, but the script did work when I used it on a small number of xml files. It didn't break until I attempted to use it on a much larger number of xml files.

[!--quoteo(post=349153:date=Feb 24 2006, 04:14 PM:name=Caesar)--][div class=\'quotetop\']QUOTE(Caesar @ Feb 24 2006, 04:14 PM) View Post[/div][div class=\'quotemain\'][!--quotec--]
Please provide some example code that we can look through.
[/quote]


#4 Cerberus_26

Cerberus_26
  • New Members
  • Pip
  • Newbie
  • 3 posts

Posted 27 February 2006 - 03:19 PM

Ok so apparently when my script is executed, somehow it copies itself and appends it to the end of the file therefore creating multiple instances of the same function throwing the error. I didn't notice it before because dreamweaver didn't reload the script after I had run it on the server. I can prevent this from happening, but now I get a blank html page with "Empty document 1" as a result of the php script and nothing is inserted into my database.

#5 suma237

suma237
  • Members
  • PipPipPip
  • Advanced Member
  • 282 posts
  • Locationindia

Posted 11 June 2007 - 07:51 AM

Are you call the database connection more than once?please check it?




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users