我有一个数据库类,它在页面加载时创建一个数据库实例,它本身就创建了一个数据库连接:
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
}