在一个php页面上运行两个单独的SQL查询

时间:2018-01-03 00:05:50

标签: php mysql sql

我已经设法找到很多合并多个表的SQL查询的答案,但我是新手,想要在两个不同的表上运行两个完全独立的查询,并在单个.php页面上显示结果。

不幸的是,我收到了“通知:未定义的索引:”错误。所以我想,我的问题是,如何在第一个或第二个查询上定义索引以避免错误?

查询1显示包含目击数据的表中的信息,第二个查询是在同一.php页面上显示新闻项目列表。

很抱歉,如果这是一个愚蠢的问题,但我对PHP和SQL很新......但你已经知道了!

非常感谢任何帮助,非常感谢!!

干杯

史蒂夫

继承人我的SQL:

<?php require_once('inc/connection.php');?>

    <?php
    // connect to MySQL
    $conn = dbConnect('read', 'pdo');
    // prepare the SQL query
    $sql = "SELECT * FROM wbcsightings WHERE spYear = year(curdate()) AND spFirstDate IS NOT NULL";
    $wbcsightings = $conn->query($sql);
    $error = $conn->errorInfo();
    if (isset($error[2])) die($error[2]);
    $numRows = $wbcsightings->fetchColumn();
    $wbcsightings->closeCursor();
    ?>

    <?php
    // connect to MySQL
    $conn = dbConnect('read', 'pdo');
    // prepare the SQL query
    $sql = 'SELECT * FROM wbcnews WHERE newsDisplay="yes" ORDER BY newsDate desc';
    $wbcnews = $conn->query($sql);
    $error = $conn->errorInfo();
    if (isset($error[2])) die($error[2]);
    $numRows = $wbcnews->fetchColumn();
    $wbcnews->closeCursor();
    ?>

这是我用来显示第一个查询结果的代码(表格wbcsightings)

<?php $i=0; foreach ($conn->query($sql) as $row) { if($i==3) break;?>
<?php echo $row['spName']; ?>
<?php echo $row['spFirstDate']; ?>
<?php echo $row['spLocation']; ?>
<?php echo $row['spRecorder']; ?>
<?php $i++;} ?>

显示第二个查询结果的代码(表格wbcnews)

<?php $i=0; foreach ($conn->query($sql) as $row) { if($i==3) break;?>
<?php echo $row['newsTitle']; ?>
<?php echo $row['newsDate']; ?>
<?php echo $row['newsSubTitle']; ?>
<?php echo $row['newsAuthor']; ?>
<?php $i++;} ?>

2 个答案:

答案 0 :(得分:0)

重复使用现有连接:

<?php require_once('inc/connection.php');?>

<?php
// connect to MySQL
$conn = dbConnect('read', 'pdo');
// prepare the SQL query
$sql = "SELECT * FROM wbcsightings WHERE spYear = year(curdate()) AND spFirstDate IS NOT NULL";
$wbcsightings = $conn->query($sql);
$error = $conn->errorInfo();
if (isset($error[2])) die($error[2]);
$numRows = $wbcsightings->fetchColumn(); // note: ->rowCount(); for actual row count. your syntax is pulling first column data only
$wbcsightings->closeCursor();
?>

<?php
$sql = 'SELECT * FROM wbcnews WHERE newsDisplay="yes" ORDER BY newsDate desc';
// REUSE EXISTING connection
$wbcnews = $conn->query($sql);
$error = $conn->errorInfo();
if (isset($error[2])) die($error[2]);
//ASSIGN another variable for wbcnews row count
$numRows2 = $wbcnews->fetchColumn(); // note: ->rowCount(); for actual row count. your syntax is pulling first column data only
$wbcnews->closeCursor();
?>

你已经在$ wbcsightings中得到了结果,所以直接预测它(不要重新查询):

<?php 
 $i=0; foreach ($wbcsightings as $row) { if($i==3) break;
 echo $row['spName'];
 echo $row['spFirstDate'];
 echo $row['spLocation'];
 echo $row['spRecorder'];
 $i++;} 
?>

$ wbcnews(不要重新查询)相同:

<?php 
 $i=0; foreach ($wbcnews as $row) { if($i==3) break;
 echo $row['newsTitle']; 
 echo $row['newsDate']; 
 echo $row['newsSubTitle']; 
 echo $row['newsAuthor']; 
 $i++;}
?>

最后,未定义索引错误是由于你的最后使用的$ sql(wbcnews)在第一个foreach循环中运行,因为wbcnews没有索引的spName ','spFirstDate','spLocation'或'spRecorder',错误是致命的。

答案 1 :(得分:-1)

我认为您的解决方案很简单,只需将您的$ sql中的任何一个更改为另一个变量名称(例如:$ sql1),这样您就可以使用 $ sql 和<来获取两个查询strong> $ sql1 ,未定义索引会发生,因为您将新查询存储到同一个变量中,这会替换第一个查询,因此对于具有不同名称的2个查询,它不会导致未定义索引,另外,您不必分离查询,可以使用

$conn = dbConnect('read', 'pdo');
// prepare the SQL query
$sql = "SELECT * FROM wbcsightings ........
....
$sql1 = "'SELECT * FROM wbcnews.......
....

并且对于fetch,您可以使用

<?php $i=0; foreach ($conn->query($sql) as $row) { if($i==3) break;?>
......
<?php $i=0; foreach ($conn->query($sql1) as $row) { if($i==3) break;?>
......

希望这会有所帮助