0

我有一个数据库类,它在页面加载时创建一个数据库实例,它本身就创建了一个数据库连接:

class database{
       var $connection; 


       /* Class constructor */
       function database(){
          /* Make connection to database */
          $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
          mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());

在这个类中,我有一个使用上述连接查询数据库的函数,如下所示:

function query($query){
      return mysql_query($query, $this->connection);
}

如果我在我的 php 中使用此查询函数一次,这将正常工作,但第二次我将此查询函数调用放入一个循环中,除了查询函数调用的第一个实例返回一个空结果集。下面是一个不工作的循环代码示例:

$chartSQL = "CALL RESEARCH.INTRA_DAY_PRICE('".$row['TICKER_I']."', 7)";
$result = $database->query($chartSQL);

这可能与我正在查询 MySQL 例程而不是简单的 select 语句这一事实有关吗?请注意,例程“INTRA_DAY_PRICE”是使用提供的参数的选择语句。可能是我在循环中使用相同的连接,并且在每次连续调用期间都在使用该连接,因此结果集为空?

编辑:这是整个循环:

$search_term = sr_addslashes($_GET['search']);
$sql = "SELECT DISTINCT t.TICKER_I, t.TICKER_C, t.TICKER_N, cpv.CURRENT_PRICE_A, cpv.MARKET_CAP, cpv.DA\
YS_CHANGE_A FROM ".DB_NAME.".TICKER_MyISAM t INNER JOIN ".DB_NAME.".CURRENT_PRICE_V cpv ON t.TICKER_I = cpv.TICKER\
_I WHERE t.INTEREST_F = 1 AND (MATCH(t.TICKER_C, t.TICKER_N) AGAINST('".$search_term."' IN BOOLEAN MODE) OR t.TICK\
ER_C = '".$search_term."' OR t.TICKER_N = '".$search_term."') LIMIT 20";

$results = $database->query($sql);


while($row = mysql_fetch_array($results)){

               //Chart

               <script type="text/javascript" src="http://www.google.com/jsapi"></script>
               <script type="text/javascript">
               google.load('visualization', '1', {packages: ['annotatedtimeline']});
               function drawVisualization() {
               var data = new google.visualization.DataTable();
               data.addColumn('date', 'Date');
               data.addColumn('number', '<?php echo $row['TICKER_C']; ?>');
               data.addRows([
               <?php
               $chartSQL = "CALL RESEARCH.INTRA_DAY_PRICE('".$row['TICKER_I']."', 7)";
               $result = $database->query($chartSQL);
               while($chartRow = mysql_fetch_array($result)){
                 echo $chartRow['FORMATTED'];
               }
               echo "null]);";
               ?>

               var annotatedtimeline = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_d\
iv_<?php echo $count; ?>'));
               annotatedtimeline.draw(data, {'scaleType': 'maximized', 'displayRangeSelector': false, 'displayZoom\
Buttons': false});
               }
               google.setOnLoadCallback(drawVisualization);
               </script>
               <div id="chart_div_<?php echo $count; ?>" class="chart_div"></div>

               <?php
                   // End Chart
}
4

0 回答 0