我已经设法找到很多合并多个表的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++;} ?>
答案 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;?>
......
希望这会有所帮助