2012-02-03 60 views
0

如果我的問題沒有意義,我很抱歉。正如您從下面的代碼中看到的那樣,它會掃描PHP文件,抓取{()}之間的文本並將其存儲到$match中。使用變量作爲列名在MYSQL中不起作用PHP腳本

現在我想要做的是在表上查詢一個表,查找列$match其中pageid等於來自URL的pageid和字段不是空的地方。到目前爲止,它只是在文本區域中返回Array。

我是否正確設置了代碼或缺少一些簡單的東西?我知道掃描部分正在工作,因爲如果我回聲匹配,我會得到{()}區域之間的文本。由於某種原因,它只是沒有做正確的查詢。或者像我說的,我錯過了一些東西。任何幫助都會很棒。如果您需要更多信息,請告訴我。 (我沒有收到任何MySQL錯誤)。

$fn = "../templates/".$templateid.".php"; 

$file = file_get_contents($fn); 

preg_match_all("#\{\('(\w+)'\)}#", $file, $matches); 

foreach ($matches[1] as $match) 
    { 
    $result = mysql_query("SELECT * FROM pages WHERE $match IS NOT NULL AND linklabel = '$pageID'") or die("Err: ".mysql_error()); 

    $res = mysql_fetch_array($result); 
    $content = $res; 
    echo " <div id='tabs-".$match."'> 
      <textarea id='".$match."' name='content-".$match."' class='fieldsetstyle'>".$content."</textarea> 
        <script type='text/javascript'> 
        CKEDITOR.replace('".$match."'); 
        </script> 
      </div>"; 
    } 
+0

是類型的pageID的列 '的LinkLabel'? – djot 2012-02-03 01:00:24

+0

那麼,你沒有得到任何結果?如果你直接在MySQL上運行查詢(通過命令行或phpMyAdmin或其他),你會得到結果嗎? – 2012-02-03 01:05:22

+1

你能舉一個例子說明放入'$ match'是什麼東西? – 2012-02-03 01:09:50

回答

3

$ RES是一個數組,所以儘量輸出正確的列,如

echo $res['linklabel']; 

或嘗試的var_dump()

var_dump($res); 


$content = $res; // Still, $content is an array, not text 
+0

我將如何能夠從等於$匹配的列中提取內容..? – 2012-02-03 01:22:11

+0

$ res [$ match]或$ content [$ match] – djot 2012-02-03 01:26:24

+0

感謝djot你做到了!只要一如既往地回答。 – 2012-02-03 01:35:31

0

試試這個

$result = mysql_query("SELECT * FROM pages WHERE ".$match." IS NOT NULL AND linklabel = '".$pageID."'") or die("Err: ".mysql_error()); 

試試這個更新

替換此

foreach ($matches[1] as $match) 

有了這個

foreach ($matches[1][1] as $match) 
+0

試過這個,仍然在結果中獲得Array。沒有MYSQL錯誤。 – 2012-02-03 01:16:58

+0

可以回顯查詢並顯示該查詢,以便我可以查看它? – 2012-02-03 01:18:26

+0

如果我把回聲,然後在查詢後退出,我得到數字1顯示... – 2012-02-03 01:21:29

相關問題