PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
CREATE TABLE questions ( question_id INT PRIMARY KEY, catalog_id INT, user_id INT ); CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(255), gender CHAR(1) ); INSERT INTO users (id, name, gender) VALUES (1, 'John Doe', 'M'), (2, 'Jane Smith', 'F'), (3, 'Alice Johnson', 'F'); INSERT INTO questions (question_id, catalog_id, user_id) VALUES (1, 101, 1); -- Вопрос для Jane Smith INSERT INTO questions (question_id, catalog_id, user_id) VALUES (2, 102, 2); -- Вопрос для Alice Johnson INSERT INTO questions (question_id, catalog_id, user_id) VALUES (3, 103, 3); select * from questions
Copy Clear
Copy Format Clear
<?php class Database { private $pdo; public function __construct($dsn, $username, $password) { try { $this->pdo = $pdo; //$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { throw new Exception("Database connection failed: " . $e->getMessage()); } } public function query($sql, $params = []) { $stmt = $this->pdo->prepare($sql); if (!$stmt) { throw new Exception("Prepare failed: " . $this->pdo->errorCode() . ": " . $this->pdo->errorInfo()[2]); } $types = implode('', array_map(function($param) { return is_int($param) ? 'i' : 's'; }, $params)); $stmt->execute($params); if ($stmt->rowCount() == 0) { return []; } return $stmt->fetchAll(PDO::FETCH_ASSOC); } } // Использование класса Database $database = new Database('mysql:host=localhost;dbname=testdb;charset=utf8mb4', 'username', 'password'); $catId = 101; $questionsQuery = 'SELECT * FROM questions WHERE catalog_id=:catalog_id'; $userQuery = 'SELECT name, gender FROM users WHERE id=:id'; try { $questionsResult = $pdo->query($questionsQuery, [':catalog_id' => $catId]); $result = []; foreach ($questionsResult as $question) { $userId = $question['user_id']; $userResult = $pdo->query($userQuery, [':id' => $userId]); if (!empty($userResult)) { $result[] = ['question' => $question, 'user' => reset($userResult)]; } } var_dump($result); } catch (Exception $e) { echo "Error: " . $e->getMessage(); }
Show:  
Copy Clear