2012-10-22 118 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