我收到这样的错误
致命错误:在第 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)
这个错误不应该出现。
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)