为什么回声$row[1]有效,但回声$row[2]不起作用?



我有一个MySQL数据库,正在尝试打印出特定行的内容。出于某种原因,回声$row[1];完美地打印出第 1 行的内容,但我无法对其他行执行相同的操作(echo $row[2];、echo $row[3]; 等(。该表有一个唯一的索引列,其中四行标记为 1-4。

我最终想做的是只打印出最后一行的内容,我认为它看起来像 echo $row['$maxrows'];但是我什至无法获得打印任何超过 1 行的语法!

我认为这可能是我的表格的问题,但由于有一个索引列,所以无法完全看到它是什么。任何建议或指示将不胜感激?

我可以怎么做才能将表中的行回显到第 1 行之后?

更新

var_dump($row);返回以下内容

{ [0]=> string(1) "1" ["Index"]=> string(1) "1" [1]=> string(121) "https://www.tilley.com/media/catalog/product/cache/image/1100x1100/e9c3970ab036de70892d86c6d221abfe/t/t/ttw2_black2_a.jpg" ["Sketch"]=> string(121) "https://www.tilley.com/media/catalog/product/cache/image/1100x1100/e9c3970ab036de70892d86c6d221abfe/t/t/ttw2_black2_a.jpg" }

该表有两列:

1-Name: Index - int(11) - AUTO_INCREMENT    
2-Name: Sketch - text
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
$sql = "SELECT * FROM Table";
$result = mysqli_query($conn, $sql);
$maxrows = mysqli_num_rows($result);
//$result = $conn->query("SELECT * FROM Table");
$row = $result->fetch_array(MYSQL_BOTH);
echo $maxrows;
echo $row[1];
echo $row[2];
echo $row[3];
echo $row[4];
//echo $result;
$conn->close();

你的结果数组有 4 个键:0Index1Sketch,这只是第一行的结果。您正在查询 2 列,但尝试访问 4 列。列编号从 0 开始。而且您不会迭代结果行。该$row = $result->fetch_array(MYSQL_BOTH);应该处于循环中。

  1. 启用错误报告。PHP 会告诉你你访问了哪些未定义的变量。
  2. 使用 PDO 有利于 mysqli。
  3. 不要
  4. 创建同时包含列名索引和数字索引的数组(不要使用MYSQL_BOTH(。使用PDO::FETCH_ASSOCPDO::FETCH_NUM
  5. 开始使用var_dump()而不是echo进行调试。总是。
  6. 处理结果数组时使用foreach循环。