PHP PDO Несколько запросов не получают никакой ценности

Я уже делал внутреннее соединение перед этим кодом, но потом кажется, что каждый раз, когда у меня есть несколько запросов, он не работает. Но тогда, когда я сделал это с одним запросом, он кажется прекрасным и работает. Пожалуйста, помогите мне. Спасибо!

<?php include('db.php'); include('function.php'); if(isset($_POST["personal_info_id"])) { $id1 = $_POST["personal_info_id"]; $id2 = $_POST["personal_info_id"]; $sql = "SELECT * FROM hr_details WHERE personal_info_id = '$id1'"; $sql .="SELECT * FROM personal_info WHERE personal_info_id = '$id2'"; $output = array(); $statement = $connection->prepare($sql); $statement->execute(); $result = $statement->fetchAll(); foreach($result as $row) { $output["firstname"] = $row["firstname"]; $output["middlename"] = $row["middlename"]; $output["lastname"] = $row["lastname"]; $output["address"] = $row["address"]; $output["birthdate"] = $row["birthdate"]; $output["gender"] = $row["gender"]; $output["religion"] = $row["religion"]; $output["civil_status"] = $row["civil_status"]; $output["biometrics"] = $row["biometrics"]; if($row["image"] != '') { $output['user_image'] = '<img src="upload/'.$row["image"].'" class="img-thumbnail" width="50" height="35" /><input type="hidden" name="hidden_user_image" value="'.$row["image"].'" />'; } else { $output['user_image'] = '<input type="hidden" name="hidden_user_image" value="" />'; } } echo json_encode($output); } ?> 

Хотя в одном вызове с PDO можно запускать несколько запросов , для этого нет никакой причины . Ни ваше дело не является исключением. Он никогда не будет работать, как вы думаете. Вместо того, чтобы набивать несколько запросов в один вызов, например, вам нужен один запрос с JOIN.

Еще одна проблема с вашим кодом – это заявление, подготовленное грузовым культом . Он выглядит как настоящий, но ничего не защищает. Вы должны использовать параметры в подготовленном запросе.

 $sql = "SELECT * FROM hr_details hd, personal_info pi WHERE hd.personal_info_id=pi.personal_info_id AND hd.personal_info_id=?"; $statement = $connection->prepare($sql); $statement->execute([$_POST["personal_info_id"]]); $result = $statement->fetchAll(); 

Разве это не работает, делая это?

 SELECT * FROM hr_details hd, personal_info pi WHERE hd.personal_info_id=pi.personal_info_id AND personal_info_id = id 

Вы должны быть осторожны, чтобы не передавать переменные непосредственно в SQL-запросе, используя

http://php.net/manual/en/pdo.prepare.php

 $sql = 'SELECT * FROM hr_details hd, personal_info pi WHERE hd.personal_info_id=pi.personal_info_id AND personal_info_id = :id'; $sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $sth->execute(array(':id' => $_POST["personal_info_id"])); $red = $sth->fetchAll();