使用下面的代码,我必须从数据库中报告一个行表。
但是除了我需要的行之外,还显示包含php代码(noName)中的部分。
我尽量只保留echo标签
echo $row[0];
但是我得到了错误
Notice: Undefined offset: 1 in test.php on line 16
MYSQL ID | Team
------------------------------
1 test1
2 test2
3 test3
PHP <?php
$connection = mysqli_connect("YourHost","user","password","dbName") or die('connection to DB failed');
$query = mysqli_query($connection,"SELECT team FROM s1");
while ($row = mysqli_fetch_array($query,MYSQLI_NUM)) {
?>
<table>
<tr>
<td><p> team name <?php if(isset($row[0])){
echo $row[0];
}else{
echo 'noName';
} ?></p></td>
</tr>
<tr>
<td><p> team name <?php if(isset($row[1])){
echo $row[1];
}else{
echo 'noName';
} ?></p></td>
</tr>
<?php } ?>
php页面输出:
test1
noName
test2
noName
您只从数据库中选择了一个字段,即team
。所以在你的PHP代码中,如果你写$row[0]
和你写$row['team']
是一样的
$row[1]
so为空。
如果你想打印所有球队的名字,你必须写这段代码:
...
echo "<table>";
while ($row = mysqli_fetch_array($query,MYSQLI_NUM)) {
?>
<tr>
<td><p> team name <?php echo $row[0]; ?></p></td>
</tr>
我会这样写你的代码:
<?php
$connection = mysqli_connect("YourHost","user","password","dbName") or die('connection to DB failed');
$query = mysqli_query($connection,"SELECT team FROM s1");
if($query) {
echo "<table>";
while ($row = mysqli_fetch_array($query,MYSQLI_NUM)) {
echo "<tr>";
echo "<td><p> team name " . $row['team'] . "</p></td>";
echo "</tr>";
}
echo "</table>";
}
?>
查看您的SQL查询:
"SELECT team FROM s1"
你只从表中选择了一个值,这个值叫做team
。因此,该查询返回的每一行将只有一个值。该值在$row[0]
中。因此,$row[1]
中没有值。为了用某些东西填充$row[1]
, SELECT
至少需要第二个值:
"SELECT team, someOtherValue FROM s1"
当然,如果表没有其他值,那么就没有其他要显示的了…
它看起来像你试图在每个循环中显示两次相同的概念值。为什么?通常,循环的每次迭代都会向HTML表中添加一行,而不是两行。像这样:
while ($row = mysqli_fetch_array($query,MYSQLI_NUM)) {
?>
<table>
<tr>
<td><p> team name <?php if(isset($row[0])){
echo $row[0];
}else{
echo 'noName';
} ?></p></td>
</tr>
<?php } ?>