致命错误:找不到类“TableRows”

BIr*_*iri 0 php mysql pdo

我收到这样的错误

致命错误:在第 15 行 /Applications/XAMPP/xamppfiles/htdocs/colorlib-search-23/test.php 中找不到类“TableRows”

这是我的代码:

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT * FROM users"); 
    $stmt->execute();

    // set the resulting array to associative
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
        echo $v;
    }
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;

Run Code Online (Sandbox Code Playgroud)

检查了数据库表的名称和所有复制粘贴的其他代码,但仍然不起作用

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT * FROM users"); 
    $stmt->execute();

    // set the resulting array to associative
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
        echo $v;
    }
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;
Run Code Online (Sandbox Code Playgroud)

这个错误不应该出现。

You*_*nse 5

Internet 上有一篇极其有害的文章,告诉您需要任何 TableRows 类才能与 PDO 一起使用。这是非常垃圾的。

事实上你不需要这样的东西。只需使用常规的 foreach

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->query("SELECT * FROM users"); 
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

此时,您已经有了一个传统的 PHP 数组,可以像使用任何其他数组一样进行迭代foreach、使用编码json_encode或使用任何其他方式

// iterate over rows
foreach($data as $row) { 
    // iterate over values in each row
    foreach($row as $v) { 
        echo $v, " ";
    }
    echo "<br>"\n;
}
Run Code Online (Sandbox Code Playgroud)