Вам нужны кавычки около $name
во втором запросе, так как это строка.
$statement2 = $pdo->prepare("SELECT * FROM psTest WHERE computerName = '$name'");
Но так как вы используете подготовленный запрос, вы должны использовать параметр вместо замены переменной.
Вы также не должны звонить $statement->fetchAll()
дважды. Первый вызов прочитает все строки, а второму не останется ничего прочитать (он не сбрасывает курсор).
$statement = $pdo->prepare("SELECT * FROM psComputers ");
$statement->execute();
$result = $statement->fetchAll();
if (count($result) > 0) {
$statement2 = $pdo->prepare("SELECT * FROM psTest WHERE computerName = :name");
$statement2->bindParam(':name', $name);
foreach ($result as $row) {
$id = $row['ID'];
$name = $row['name'];
$statement2->execute();
$result2 = $statement2->fetchAll();
if (count($result2) > 0) {
foreach ($result2 as $row2) {
$id2 = $row2['ID'];
$computerName = $row2['computerName'];
$category = $row2['category'];
$value = $row2['value'];
}
}
}
}
Но еще лучше объединить два запроса:
$statement = $pdo->prepare("
SELECT c.id AS computerID, c.name AS computerName, t.id AS testID, t.category, t.value
FROM psComputers AS c
JOIN psTest AS t ON c.name = t.computerName
ORDER BY c.id");