2016-03-19 41 views
2

我想加载一个PHP的文件,我想要执行,并且我也希望能够用我选择的值替换特定的单词。使用php作为strtr的数组值

因此,例如,我有2个文件,index.phptest.php

Index.php

<?php 
$stmt = $dbh->prepare("SELECT * FROM users WHERE `id` = :id"); 
$stmt->bindValue(":id",$_COOKIE[id]); 
$stmt->execute(); 

$in = $stmt->fetch(PDO::FETCH_ASSOC); 

function callback($buffer) 
{ 
$ID = 'hesdfsdfsdy'; 
$arr = array(
    "{ID}" => ''.$in['id'].'', 
    "{TITLE}" => 'Testttingggg' 
); 
    return (strtr($buffer,$arr)); 
} 

ob_start("callback"); 
include 'test.php'; 
?> 

一切工作,除了为{ID}出来空的,因为它不会显示$in['id']的事实值。如果我使用$ID而不是$in['id'],它会显示"hesdfsdfsdy"的值。所以一些不太合作$in。如果我在test.php内部使用$in['id'],它工作正常。它只是它不想与替代品一起工作。

test.php

<?php 
echo '{TITLE} - '.$in["id"].'; 
?> 

所以我的问题是,为什么我不能得到$in["id"]使用{ID}时工作。

谢谢

+0

'$ stmt-> bindValue( “:ID”,$ _ COOKIE [ID]);'需要是'$ stmt-> bindValue( “:ID”,$ _ COOKIE [” ID']);'。我还认为你需要在'<?php'后面的每个'.php'页面上添加'session_start();'# –

+0

@Anant,谢谢你的回复。我已经解决了这些问题,谢谢。虽然我仍然遇到同样的问题 – Gesset

+0

var_dump($ in);'说什么?检查并向我们展示 –

回答