为什么echo$row[1]工作,而echo$row[2]不工作?

y1aodyip  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(455)

我有一个mysql数据库,正试图打印出特定行的内容。出于某种原因,echo$行[1];完美地打印出第1行的内容,但我无法对其他行执行相同的操作(echo$row[2];,echo$行[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();
bwleehnv

bwleehnv1#

结果数组有4个键: 0 , Index , 1 以及 Sketch ,这只是第一行的结果。您正在查询2列,但尝试访问4列。列编号从0开始。你不会迭代结果行。那个 $row = $result->fetch_array(MYSQL_BOTH); 应该在一个循环中。
启用错误报告。php将向您显示您正在访问哪些未定义的变量。
使用pdo有利于mysqli。
不要创建同时包含列名索引和数字索引的数组(不要使用 MYSQL_BOTH ). 使用 PDO::FETCH_ASSOC 或者 PDO::FETCH_NUM .
开始使用 var_dump() 而不是 echo 用于调试。总是。
使用 foreach 处理结果数组时循环。

相关问题