2014-10-29 101 views
-1

我是新来的PHP代码,我想知道如何将一个PHP文件的多个变量数据传递到另一个PHP文件。在详细描述之下。PHP通过变量值形式一个PHP到另一个PHP

在第一个文件(file1)我已经分配了一些查询值,我想在第二个文件(文件2)中读取。请帮忙。

$query = "SELECT * FROM table1 where field1 = 'abc' and feild2='xyz'"; 
$query1 = "SELECT * FROM table2 where field1= 'abc' and feild2='xyz'"; 
$query2 = "SELECT * FROM table3 where field1= 'abc' and feild2='xyz'"; 

<a target="_blank" href='file2.php' >Firstquery</a> 
<a target="_blank" href='file2.php' >seconquery</a> 
<a target="_blank" href='file2.php' >thirdquery</a> 

文件2:代码

文件1的下方

echo $query; 
echo $query1; 
echo $query2; 
+0

可能重复http://stackoverflow.com/questions/871858/php-pass-variable-to-next-页面) – 2014-10-29 16:37:13

+0

您可以通过隐藏的输入类型传递该信息。 – Wiraj 2014-10-29 16:38:00

+4

@Wiraj通过表单字段传递sql是一个非常糟糕的主意,任何人都可以修改它。 – jeroen 2014-10-29 16:48:00

回答

0

PHP是基于请求/响应语言。这意味着每次您加载页面时,服务器都认为它正在为新用户提供服务。所以当你从File1到File2时,Web服务器并不知道你甚至去过File1。

嗯,除非你有所作为。

有几个方法,你可以克服这一点:

  1. 使用会话变量

会话被存储为个人用户对一个唯一的会话ID数据的简单方法。这可以用来在页面请求之间保持状态信息。会话ID通常通过会话cookie发送到浏览器,ID用于检索现有的会话数据。缺少ID或会话cookie可让PHP知道创建新会话并生成新的会话ID。

你的代码可以像下面那样工作。 (请注意,此代码有助于解释该概念,不应在任何实际应用中使用)。

File1中:

session_start(); 

$query = "SELECT * FROM table1 where field1 = 'abc' and feild2='xyz'"; 
$query1 = "SELECT * FROM table2 where field1= 'abc' and feild2='xyz'"; 
$query2 = "SELECT * FROM table3 where field1= 'abc' and feild2='xyz'"; 

$_SESSION['query'] = $query; 
$_SESSION['query1'] = $query1; 
$_SESSION['query2'] = $query2; 

<a target="_blank" href='file2.php' >Firstquery</a> 
<a target="_blank" href='file2.php' >seconquery</a> 
<a target="_blank" href='file2.php' >thirdquery</a> 

文件2:

session_start(); 
echo $_SESSION['query']; 
echo $_SESSION['query1']; 
echo $_SESSION['query2']; 
经由一个隐藏字段
  • 邮政值
  • +0

    但是在File2中,它不会从查询中读取。如果你回显它只显示查询。 – Cherry 2014-10-29 17:00:13

    -3

    可以尝试:

    <form method="post" name = "someform" action="file2.php"> <input type="hidden" name="Firstquery" value=".$query."> <input type="submit"> </form>

    ,并在文件2:

    $Firstquery= $_POST["Firstquery"];

    或者你可以用会话做到这一点:

    $_SESSION["Firstquery"] = $query;

    得到查询:
    $query= $_SESSION["Firstquery"];

    +1

    不好意思,但是这是抛出任意查询的做法是完全疯狂的。 – tadman 2014-10-29 17:23:40

    1

    你只需要使用get参数在你的链接,如果我正确理解你的问题。但是,您不希望传递整个查询或将该查询保存到会话中。相反,您只是想传递查询所需的值。为了保持查询本身保持在一个地方,我会创建一些模型类或一组可以包含在需要它们的文件中的函数。

    <?php 
    // initial page 
    $field1 = 'abc'; 
    $field2 = 'xyz'; 
    
    $query = "SELECT * FROM table1 where field1 = ? and feild2=?"; 
    $query1 = "SELECT * FROM table2 where field1= ? and feild2= ?"; 
    $query2 = "SELECT * FROM table3 where field1= ? and feild2= ?"; 
    ?> 
    
    <a target="_blank" href="<?php printf('file1.php?field1=%s&field2=%s', $field1, $field2) ?>" >Firstquery</a> 
    <a target="_blank" href="<?php printf('file2.php?field1=%s&field2=%s', $field1, $field2) ?>">seconquery</a> 
    <a target="_blank" href="<?php printf('file3.php?field1=%s&field2=%s', $field1, $field2) ?>">thirdquery</a> 
    

    然后在文件* .PHP

    <?php 
    // File1.php 
    $field1 = isset($_GET['field1']) ? $_GET['field1'] : null; 
    $field2 = isset($_GET['field2']) ? $_GET['field2'] : null; 
    
    $query = "SELECT * FROM table1 where field1 = ? and feild2=?"; 
    $query1 = "SELECT * FROM table2 where field1= ? and feild2= ?"; 
    $query2 = "SELECT * FROM table3 where field1= ? and feild2= ?"; 
    
    $db = new PDO($dsn, $user, $pass); 
    if ($field1 && $field2) { 
        // do your querying 
        // if you are not using PDO or mysqli which supports prepared statements then you 
        // need to manually quote these variables since the come from the frontend 
        // you also probably want to sanitize of validate them in some way as well. 
        $stmt = $db->prepare($query); 
        $stmt->execute(array($field1, $field2); 
        $results1 = $pdo->fetchAll(PDO::FETCH_ASSOC); 
    
        // rinse and repeat for the other 2 queries 
    } ?> 
    
    +0

    目前还不清楚为什么查询在两个文件中。 – tadman 2014-10-29 17:24:17

    +0

    @Tadman真够...编辑... – prodigitalson 2014-10-29 17:27:23

    0

    如果u想变量,网址比

    试试这个

    yourfilename.php?var1=value&val2=value 
    

    第一个参数是附加文件名使用?并且之后&是用于追加其他参数

    [PHP通行证可变下页](的
    相关问题