2013-03-07 42 views
0

我有一個像這樣的腳本,其中包括我的模型中處理圖片上傳的腳本。然後,我打電話與addImage(該文件的功能),像這樣:PHP數據庫連接變量不包括在內

<?php 
    include '../model/imageUploadHandler.php'; 

    $imgTitle = $_POST["image_title"]; 
    $imgDescr = $_POST["image_description"]; 
    $target_path = "../images/"; 
    $filename = basename($_FILES['file']['name']); 
    $target_path = $target_path . $filename; 

    addImage($imgTitle, $imgDescr, $filename); 

?> 

然後,在imageUploadHandler.php,我寫的功能,這就是所謂順利:

<?php 
    include('./db_conn.php'); 

    function addImage($title, $description, $target_path) 
    { 
     if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) 
     { 
      $sql = "INSERT INTO image_data (filename, title, description) VALUES ('$target_path','$title','$description')"; 
      echo $sql; 

      if (!mysqli_query($con, $sql)) 
      { 
       die('Error: ' . mysqli_error()); 
      } 
      echo "1 record added"; 

      echo "The file " . basename($_FILES['file']['name']) . " has been uploaded"; 
      echo $title; 
      echo $description; 
     } 
     else 
     { 
      echo "There was an error uploading the file, please try again!"; 
     } 
    } 
?> 

我已經包含了一個「db_conn.php」腳本,這樣我就可以在需要連接數據庫的地方包含db_conn.php。這裏是db_conn.php

<?php 
    // Create connection 
    $con = mysqli_connect("","root","root", "image_info"); 

    // Check connection 
    if (mysqli_connect_errno($con)) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
?> 

數據庫連接並一切正常,如果我直接把連接腳本內嵌沒有包括。但是,當我嘗試包含外部文件(db_conn.php)時,出於某種原因,$ con變量不可用於我的imageUploadHandler.php

任何想法爲什麼?

回答

1

這是一個範圍問題。除非作爲參數傳入或聲明爲global,否則您的連接將不在您的功能範圍內。

+0

那麼首選或標準解決方案是什麼?是宣佈一個全局變量混亂,或者是或多或少的標準? – 2013-03-07 16:54:38

+0

全局應該謹慎使用,可能難以管理。但是有一些東西,比如數據庫連接,可以在應用程序中全局使用,所以使用全局是有道理的。一些框架建立了框架內應該如何完成的偏好(Zend框架使用全局註冊表),但它最終是您的選擇。 – datasage 2013-03-07 16:58:15

+0

所以我宣佈$ con爲全球$ con,但它仍然不可用。我應該使用$ _GLOBALS []關聯數組嗎? – 2013-03-07 17:00:05