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

xe55xuns  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(293)

对于合并多个表的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++;} ?>
fdbelqdn

fdbelqdn1#

重用现有连接:

<?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”,所以该错误是致命的。

xwbd5t1u

xwbd5t1u2#

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

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

你可以用它来取货

<?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;?>
......

希望这会有帮助

相关问题