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

时间:2018-08-26 16:06:14

标签: php mysql

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

我最终想要做的是仅打印最后一行的内容,我认为这看起来像是echo $ row ['$ maxrows'];但是我什至无法获得打印超过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();

1 个答案:

答案 0 :(得分:0)

您的结果数组具有4个键:0Index1Sketch,仅是 first 行的结果。您正在查询2列,但尝试访问4列。列编号以0开头。并且您不会迭代结果行。 $row = $result->fetch_array(MYSQL_BOTH);应该处于循环状态。

  1. Turn on error reporting。 PHP将向您显示要访问的未定义变量。
  2. 使用PDO代替mysqli
  3. 不要同时创建具有列名索引和数字索引的数组(不要使用MYSQL_BOTH)。使用PDO::FETCH_ASSOCPDO::FETCH_NUM
  4. 开始使用var_dump()而不是echo进行调试。总是。
  5. 处理结果数组时,请使用foreach循环。