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 die(var_dump($mysqli)); function prepareAndExecute($mysqli, $query, $params) { $stmt = $mysqli->prepare($query); if (!$stmt) { error_log("Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error); return null; } $types = str_repeat('i', count($params)); $stmt->bind_param($types, ...$params); if (!$stmt->execute()) { error_log("Execute failed: (" . $stmt->errno . ") " . $stmt->error); return null; } return $stmt; } function fetchAllAssoc($stmt) { $result = $stmt->get_result(); if (!$result) { error_log("Execute failed: (" . $stmt->errno . ") " . $stmt->error); return []; } $data = []; while ($row = $result->fetch_assoc()) { $data[] = $row; } return $data; } $mysqli->connect_error && error_log("Connection failed: " . $mysqli->connect_error) && exit; $questionsQuery = 'SELECT * FROM questions WHERE catalog_id=?'; $userQuery = 'SELECT name, gender FROM users WHERE id=?'; $catId = 101; $stmt = prepareAndExecute($mysqli, $questionsQuery, [$catId]); if (!$stmt) { exit; } $questionsResult = fetchAllAssoc($stmt); $result = []; foreach ($questionsResult as $question) { $userId = $question['user_id']; $userStmt = prepareAndExecute($mysqli, $userQuery, [$userId]); if (!$userStmt) { continue; } $userResult = fetchAllAssoc($userStmt); if (empty($userResult)) { continue; } $result[] = ['question' => $question, 'user' => reset($userResult)]; } $stmt->close(); $mysqli->close(); var_dump($result);
Show:  
Copy Clear