我在使用 PHP 将变量从 SQL 解析为另一个 SQL 语句时遇到问题


I am having issues with parsing a variable from an SQL into another SQL statement with PHP

<?php
 if(isset($_POST['submitted'])){
//Connecting to the database
include('includes/connection.php');


// Creating variables to Post selected input item into database
$meeting_type = explode('|', $_POST['meeting_type']);
$date_picker = $_POST['date_picker'];
//$query = "SELECT * FROM meeting_tb WHERE meeting_type = '$meeting_type[1]'";
$query = "SELECT meeting_id, meeting_type, date FROM meeting_tb WHERE date in (select Max(date) as mindate from meeting_tb where meeting_type = '$meeting_type[1]')";

    $query_result = mysqli_query($db_con, $query) or die("error retrieving data");
    $row_meeting = mysqli_fetch_array($query_result, MYSQLI_ASSOC) or die("Not able to retrieve information");

$query_item = "SELECT join_tb.item_id, item_name, item_description FROM join_tb INNER JOIN meeting_item_tb ON join_tb.item_id = meeting_item_tb.item_id WHERE join_tb.meeting_id = '$row_meeting[meeting_id]'";
$result = mysqli_query($db_con, $query_item) or die("error retrieving data");
echo "<table>";
echo "<tr> <th>ITEM ID</th> <th>ITEM NAME</th>  <th>ITEM DESCRIPTION</th> </tr>";
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
echo "<tr><td>";
echo $row['item_id'];
echo "</td><td>";
echo $row['item_name'];
echo "</td><td>";
echo $row['item_description'];
echo "</td></tr>";
}
echo "</table>";

}
//End of IF statement

?>

该问题涉及在第二个选择语句中使用$row_meeting[meeting_id]。如果我用一个数值代替$row_meeting[meeting_id],select 语句有效,它会在浏览器上显示输出。但是如果我在第二个选择语句中使用$row_meeting[meeting_id],它不会从数据库中获取数据

通过在$row_meeting[meeting_id]周围放置单个倒逗号,您将在解析为 SQL 时将数字转换为字符串。为避免将其解析为字符串,您只需删除单个倒逗号即可。因此,您的选择语句将如下所示:

$query_item = "SELECT join_tb.item_id, item_name, item_description FROM join_tb INNER JOIN meeting_item_tb ON join_tb.item_id = meeting_item_tb.item_id WHERE join_tb.meeting_id = $row_meeting['meeting_id']";

希望这有帮助。

在第二个查询中尝试此操作

$query_item = "SELECT join_tb.item_id, item_name, item_description FROM join_tb INNER JOIN meeting_item_tb ON join_tb.item_id = meeting_item_tb.item_id WHERE join_tb.meeting_id = ".$row_meeting[meeting_id].";";

这是可能的,因为变量周围有单引号。