2011-12-11 60 views
0

我對此感到精神。迄今爲止,我已經嘗試了幾個小時。這裏是任務:Joomla 1.7數據庫查詢不起作用,當查詢有&符號

在模塊覆蓋,我用這個代碼:

$db =& JFactory::getDBO(); 
$title = "Analysen & Auswertungen Infos"; 
$query = "SELECT introtext FROM #__content WHERE title=\"$title\""; 
$db->setQuery($query); 
$result = $db->loadRow(); 
echo $result; 

這工作,但因爲我是從一個變量獲得$title動態我需要這個工作:

$db =& JFactory::getDBO(); 
$title = "$linktext Infos"; 
$query = "SELECT introtext FROM #__content WHERE title=\"$title\""; 
$db->setQuery($query); 
$result = $db->loadRow(); 
echo $result; 

我有6個變量,在foreach循環填充$linktext,除了一個與包括「&」的字符串的所有工作......

我在查詢中嘗試了htmlentities和utf8_encode以及其他種類(實際上所有組合)的「和」...沒有任何工作。

WHE我用下面的SQL查詢在phpMyAdmin它的工作原理:

SELECT `introtext` FROM `x999x_content` WHERE `title`="Analysen & Auswertungen Infos" 

我在這真的不解,而現在非常疲憊,憤怒...... 任何幫助將不勝感激!

回答

2

有時候一個好的長時間睡眠是最好的你可以做!

我剛剛使用strlen來檢查$linktext(我通過foreach循環從DB獲得)的長度,發現它比可見字符長。這是合乎邏輯的,因爲&返回爲&

爲了使用這個$linktext一個新的數據庫查詢中,所有我需要做的是解碼HTML實體:

$db =& JFactory::getDBO(); 
// this is the correct way of doing it 
$title = html_entity_decode($linktext)." Infos"; 
$query = "SELECT introtext FROM #__content WHERE title=\"$title\""; 
$db->setQuery($query); 
$result = $db->loadRow(); 

或任何其他COMBI的查詢(」,',',$查詢 - >選擇),如其他答案

0

你嘗試:

$db =& JFactory::getDBO(); 
$title = $linktext." Infos"; 
$query = "SELECT `introtext` FROM `#__content` WHERE `title`='".$title."'"; 
$db->setQuery($query); 
$result = $db->loadRow(); 
echo $result; 

我不知道這是否會工作,但我從來沒有任何問題,這是我怎麼寫我的代碼。

+0

是啊...沒嘗試一切......」,','......只是要確定我也嘗試過你的方式。它沒有工作。所有其他的$ linktext工作雖然!與我和你的解決方案。它只是一個包含一個「&」的單個......這真是令人毛骨悚然。也許它與我從DB獲得的$ linktext有關?也許這裏有一些扭曲的角色...但我試過htmlentities和類似的$ linktext以及... – deeno

0

嘗試改變這一行:

$query = "SELECT introtext FROM #__content WHERE title=\"$title\""; 

對於這一點:

$query = $db->getQuery(tru); 
$query->select('introtext'); 
$query->from('#__content'); 
$query->where('title=' . $db->Quote($title); 

我希望它幫助!

+0

nope,與上面相同...所有其他$ linktext工作,除了一個與& ...但感謝您的努力! – deeno

+0

btw,2個錯別字: line1應該是(true) 和 line4缺少一個)right right; – deeno

0

指出,我得到了這個工作:

<?php 
$servername = ""; 
$username = ""; 
$password = ""; 
$dbname = ""; 

$keyvalue='101'; 

$conn = new mysqli($servername, $username, $password, $dbname); 
$sql = "SELECT * FROM mytable WHERE keyfield='".$keyvalue."'"; 
$result = $conn->query($sql); 

if($result && $row = $result->fetch_assoc()) { 
    $fsql='DESCRIBE mytable'; 
    $fresult = $conn->query($fsql); 
    if($fresult){ 
    while($frow = $fresult->fetch_assoc()) { 
     $fieldname=$frow['Field']; 
     echo($fieldname . ' = ' . $row[$fieldname] . '<br><br>'); 
    } 
    } 
}else echo("Failed: " . $sql); 

?> 
+0

你確實意識到這個問題是在6年前問過的。對? –