对于合并多个表的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条答案
按热度按时间fdbelqdn1#
重用现有连接:
您已经在$wbcsightings中获得了结果,因此请直接访问它(不要重新查询):
$wbcnews也一样(不重新查询):
最后,未定义的索引错误是由于上次使用的$sql(wbcnews)在第一个foreach循环中运行,因为wbcnews没有索引“spname”、“spfirstdate”、“splocation”或“sprecorder”,所以该错误是致命的。
xwbd5t1u2#
我认为您的解决方案很简单,只要将$sql中的任何一个更改为变量的另一个名称(例如:$sql1),这样您就可以使用$sql和$sql1来获取您的两个查询,未定义的索引之所以发生,是因为您将新查询存储到同一个变量,而该变量将替换第一个查询,因此,对于两个名称不同的查询,它不会导致未定义的索引,而且,您不必分离查询,您可以使用
你可以用它来取货
希望这会有帮助