2012-05-07 81 views
2

我無法將兩個變量傳遞到包含的文件中。將變量傳遞到包含的PHP文件中用作MySQL查詢

可視頁:

<?php 

$sqlCount = "This is a working MySQL query."; 
$sqlQuery = "This is also a working MySQL query."; 

include("include.php"); 

?> 

include.php:

<?php 

$result = mysql_query($sqlCount, $conn) or trigger_error("SQL", E_USER_ERROR); 
//$result populates variables to be used in second portion of code 
//don't need $result anymore 

$result = mysql_query($sqlQuery, $conn) or trigger_error("SQL", E_USER_ERROR); 
//rest of my code 

?> 

的代碼在可視PHP頁面工程時,我不包括它。當我將$ sqlCount和$ sqlQuery移動到include.php時,它也可以工作。

我已經能夠找到的唯一真正的解決方案是將它們聲明爲全局變量,但是當我嘗試它時沒有做任何事情。

編輯:我想通了。 $ sqlQuery在查詢內部有變量,直到include.php文件內部才被創建。

+1

那麼究竟發生了什麼?你說這不起作用,但你會得到什麼錯誤? – Hamish

+0

@Hamish這是一個未定義的變量錯誤。 – jaypea07

+0

從它的聲音中,這些變量可能不在範圍內。這可能有多種原因。包含的文件是AJAX函數的一部分嗎?包含文件中'$ result'的深度是多少? '$ result'是否可以在運行時解析?我會在包含文件的開頭嘗試'var_dump()'這些變量。 – mseancole

回答

0

一種更好的方法,在我的觀點會改寫「include.php」的代碼作爲一個功能,你就可以從你的「可視頁」撥打:

include.php

<?php 
function included_function($sql_count, $sql_query) 
{ 
    $result = mysql_query($sql_count, $conn) or trigger_error("SQL", E_USER_ERROR); 
    //$result populates variables to be used in second portion of code 
    //don't need $result anymore 

    $result = mysql_query($sql_query, $conn) or trigger_error("SQL", E_USER_ERROR); 
    //rest of my code 
} 
?> 

「查看頁面」

<?php 
include("include.php"); 

$sqlCount = "This is a working MySQL query."; 
$sqlQuery = "This is also a working MySQL query."; 

included_function($sqlCount, $sqlQuery); 

?> 
+1

這其實並非如此。 [PHP手冊](http://php.net/include)說:「當包含一個文件時,它所包含的代碼會繼承包含所在行的變量範圍。調用文件將在被調用的文件中可用,但是,在包含文件中定義的所有函數和類都具有全局範圍。「 – Daan

+1

我的不好,謝謝你指出,我馬上解決我的答案 –

0

你嘗試

include.php:

<?php 

echo $sqlCount; die(); // just to be sure you have what you expect? 
$result = mysql_query($sqlCount, $conn) or trigger_error("SQL", E_USER_ERROR);