2012-10-22 125 views
0

我是新来的PDO和PHP,我想知道如何去定义从我的表中拉出的信息的变量。从另外两个变量中定义一个变量

我有以下几点:

$UID = $_GET['id']; 
$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != '' AND ID = '$UID'"); 
$sth->execute(); 

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { 
    echo $row['First_Name'] . ' ' . $row['Surname'] . "\n"; 
    echo '<img src="http://maps.google.com/maps/api/staticmap?center=' . $row["Location_Postcode_Last_Seen"] . '&amp;zoom=1 
    4&amp;size=200x200&amp;maptype=roadmap&amp;markers=color:ORANGE|label:A|' . $row["Location_Postcode_Last_Seen"] . '&amp;sensor=true">'; 
    echo $row["Nicknames"]; 
    echo $row["Age"]; 

} 

如果我尝试添加:

var $name = echo $row['First_Name'] . ' ' . $row['Surname']; 
while循环的代码不能输出任何东西到我的浏览器中

+4

如果你使用的PDO,你应该永远** **插入用户变量直接到SQL。 [SQL占位符](http://bobby-tables.com/php)工具是有原因的。这应该是'ID =?',并且在事实之后有一个'bind_param'调用。 – tadman

回答

2

分配变量这样做,

$name = $row['First_Name'] . ' ' . $row['Surname']; //defining variable $name 

和回声/显示出来,应该是这样做,

echo $name; //this will display whatever is in $name 

while循环,在这个问题给出应该做工精细,只要这些键存在于结果集中,就会显示出您正在尝试输出的所有内容。

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { 
echo $row['First_Name'] . ' ' . $row['Surname'] . "\n"; 
echo '<img src="http://maps.google.com/maps/api/staticmap?center=' . $row["Location_Postcode_Last_Seen"] . '&amp;zoom=1 
4&amp;size=200x200&amp;maptype=roadmap&amp;markers=color:ORANGE|label:A|' . $row["Location_Postcode_Last_Seen"] . '&amp;sensor=true">'; 
echo $row["Nicknames"]; 
echo $row["Age"]; 
} 

编辑:(按评论)

//assign all that you want to display to a variable $map, the equality operator '=' is used for assigning the right-hand side value to the left-hand side variable. 
$map = '<img src="maps.google.com/maps/api/staticmap?center=' . $row["Location_Postcode_Last_Seen"] . '&amp;zoom=1 4&amp;size=200x200&amp;maptype=roadmap&amp;markers=color:ORANGE|label:A|' . $row["Location_Postcode_Last_Seen"] . '&amp;sensor=true">'; 

echo $map; //display $map 

注:变量需要仅分配,如果他们需要访问多次。

+0

谢谢@ Coder1984,这似乎不工作... $ map = echo''; – Liam

+0

就像我在答案中提到的那样,你正在试图结合2个不同的函数,第一个是“分配变量$ map”,第二个是“回显/显示它”,它们需要分两步完成,如答案中所示。 –

+0

我编辑了我的答案,看看 –

0

var是一个关键字,仅用于在类中声明变量。那可能是问题将是:使用preprared statmemnts错误

echo $row['First_Name'] . ' ' . $row['Surname']; 

$name = $row['First_Name'] . ' ' . $row['Surname']; 
echo $name; 

另外您选择。他们的一部分好处是让你的参数自动引用。它应该看起来像下列之一:

// position placeholders 
$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != '' AND ID = ?"); 
$sth->execute(array($UID)); 

// names palceholders 
$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != '' AND ID = :uid"); 
$sth->execute(array(':uid' => $UID)); 
+0

谢谢@prodigitalson,这似乎没有工作... $ map = echo''; – Liam

+0

将字符串赋值为'$ map'那么'echo $ map'不能同时出现。如果你必须在同一时间完成它们,那么你实际上做的就是'echo($ map ='map for map');' – prodigitalson

+0

我不明白你写的准备好的语句与我的区别吗?你什么意思会自动引用我的参数? – Liam