2012-01-12 27 views
0

當我有一個非常簡單的請求,並不能找出爲什麼這是錯的:mysql的PHP錯誤調用錶行

if ($_GET['linklabel'] !== '') 
{ 
    $query = "SELECT templateid FROM pages WHERE linklabel = {$_GET['linklabel']}"; 

    $result=mysql_query($query);  

    $templateid = $result['templateid']; 

    echo $templateid; 

    if ($result !== 0) 

    { 

     include($templateid.'.php'); 

    } 

    else 

    { 
     include('404error'); 
    } 
} 

該表中的templateid有測試的VARCHAR值。瀏覽器說它找不到文件test.php

我輸入了什麼錯?

迴應變量$templateid也不會輸出任何東西,所以我的想法是$templateid = $result['templateid'];有什麼問題嗎?

回答

2

mysql_query()返回一個語句句柄,而不是實際的數據。你要獲取數據的行之前,你可以從你的查詢結果訪問各個領域:

$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_assoc($result); 
$templateid = $result['templateid']; 

也注意到,你是全方位開放的SQL注入攻擊,如果這回事面向公衆的網站,你可以期望以非常短的順序被運送。

1

嘗試改變$查詢線:

$query = "SELECT templateid FROM pages WHERE linklabel = '{$_GET['linklabel']}'"; 

注意額外的報價。