代码之家  ›  专栏  ›  技术社区  ›  Q_Mlilo

joomla,mysql错误

  •  0
  • Q_Mlilo  · 技术社区  · 15 年前

    我已经上传了一个页面,代码如下到我的joomla根目录。

    <?php
    $value = trim($_POST['opts']);
    
    if ($value){ 
    $db = "my_db";
    $link = mysql_connect('localhost',$me,$my_password);
    
    if(!$link) die("Error 1 ".mysql_error());
    
    mysql_select_db($db);
    
     **$query =  "SELECT introtext,fulltext FROM jos_content WHERE title='$value' ";** 
    
     $result = mysql_query($query);
    
     **if(!$result) die("Error 2 ".mysql_error());**
    
     $obj = mysql_fetch_array($result);
    
     $obj_f = $obj[0];
    
     $lenght = strlen($obj_f);
     $header2 = strpos($obj_f, "Did you know");
     $header3 = strstr($obj_f, "Summary");
    
    $third_part = $header3; 
    $first_part = substr($obj_f, 0, ($header2 - 1));
    $second_part = substr($obj_f, $header2,((strpos($obj_f, "Summary")) - $header2) );             
     }
    ?>
    

    问题是当我改变我的选择( http://sanatural.co.za/sanp/test.php )我收到此错误消息: 错误2您的SQL语法中有错误;请检查与MySQL服务器版本对应的手册,以获取正确的语法,以便在第1行中title=“arthritis”处的“fulltext from jos_content”

    我认为问题可能出在粗体突出显示的代码上。请帮忙。

    2 回复  |  直到 15 年前
        1
  •  6
  •   mck89    15 年前

    全文是一个mysql关键字,必须转义它。替换:

    $query = "SELECT introtext,fulltext FROM jos_content WHERE title='$value' ";
    

    具有

    $query = "SELECT `introtext`,`fulltext` FROM jos_content WHERE title='$value' ";
    
        2
  •  1
  •   bucabay    15 年前

    这有点离题,但是在joomla中使用php的一个简单方法是通过php组件。 http://www.fijiwebdesign.com/products/joomla-php-pages.html

    如果你想要快速的东西,那么你也可以使用PHP模块。 http://www.fijiwebdesign.com/products/joomla-php-module.html

    只需安装其中一个,添加php,并将其添加到joomla菜单中。 然后,您可以使用该API,这将简化您想要做的工作。

    例如,数据库查询可以是:

    // Joomla already has a connection to the DB 
    // available here as a Singleton in the Factory pattern
    $Db =& JFactory::getDBO();
    
    // querying the db
    $Db->setQuery('SELECT `introtext`,`fulltext` FROM #__content WHERE title='.$Db->Quote($value).' LIMIT 1';
    // retrieving a single row as an object
    $article = $Db->loadObject();
    // handle errors
    if($Db->getErrorNum()) {
       JError::raiseError( 500, $Db->stderr());
    }
    
    //Then accessing each column/property would look something like:
    
    $intro = $article->introtext;
    $text = $article->fulltext;
    

    完整的数据库api记录在这里: http://api.joomla.org/Joomla-Framework/Database/JDatabase.html