具有多个内部联接的PDO查询的未定义结果,但SQL中的查询是正确的



我因为这个问题被阻止了两天。

我想在我的";info_array";。

http://www.noelshack.com/2022-32-4-1660224518-type-miss.png

Td’s";键入"警报";具有缺少的信息,该信息调用另一个表。但我无法解释为什么。客户端的所有信息都调用表客户端;键入"警报";调用type_alarme的表。它们之间没有柱连接。这就是为什么我使用";内部联接";在我的PDO查询中。

我搜索了不同的方法来连接两个表的结果,但没有成功。

这里是我这部分的HTML代码(它涉及"td id="alarme_type_client"gt;</td"(:

<table id="info_client" border=1>
<thead>
<tr>
<th>#</th>
<th>Nom</th>
<th>Prénom</th>
<th>Date de naissance</th>
<th>Adresse</th>
<th>Adresse mail</th>
<th>Téléphone</th>
<th>Age</th>
<th>Type d'alarme</th>
</tr>
</thead>
<tbody>
<tr id=<?php echo $client["id_client"]; ?>>
<td id="id"></td>
<td id="nom"></td>
<td id="prenom"></td>
<td id="date" name="date"></td>
<td id="adresse"></td>
<td id="mail"></td>
<td id="tph"></td>
<td id="age"></td>
<td id="alarme_type_client"></td>
<td><button data-id="<?php echo $client["id_client"]; ?>" type="button" class="hide_client">Masquer client</button></td>
</td>
</tr>
</tbody>
</table>

我的ajax功能:

$(".info").click(function () {
var datas = {
cmd: 'id_client',
id_client: $(this).attr('data-id'),
};
$.ajax({
type: "GET",
url: "function.php",
data: datas,
}).done(function (sendinfo) {
$('#alarme_type_client').html(sendinfo.nom_type_alarme),
console.log(sendinfo.nom_type_alarme);

});
});

我的PHP函数:

function read_type(){
global $db;
$id_client = $_GET['id_client'];
$sql = "SELECT nom_type_alarme FROM type_alarme
INNER JOIN alarme on type_alarme.id_type_alarme = alarme.id_type_alarme
INNER JOIN client ON alarme.id_client=client.id_client
WHERE id_client = :id_client";
$query = $db->prepare($sql);
$query->bindParam(':id_client', $id_client, PDO::PARAM_STR);
$query->execute();
$sendinfo = $query->fetch();
print_r($sendinfo);
return ($sendinfo);
}

http://www.noelshack.com/2022-32-4-1660225072-resultat-sql.png

在Heidi SQL(Laragon(中,查询是有效的。我使用2个内部连接,因为警报是我的主表,它结合了我需要的信息

如果我擦除";type_alarme.nom_type_alarme"在查询的开头。

有什么想法吗?我找不到解决办法。

谢谢你的帮助。

这是因为您根本没有加入type_alarme表。为什么?因为在SQL查询中,在执行INNER JOIN type_alarme之前有一个分号;。因此查询在那里被中断,因此SELECT子句中的type_alarme.nom_type_alarme不知道是哪个表和列。

删除分号,它就会起作用。

最新更新