Php PDO更新不返回变量

Php PDO更新不返回变量,php,pdo,Php,Pdo,我正在尝试使用PDO更新我的postgres数据库中的一行 表单未将变量发送到处理程序文件 我不确定问题出在哪里,我已经为此奋斗了几天 形式 /$maxContent已设置且可用 //$context\u编号已设置且可用 回声“; $query3=$conn->prepare(“从挖掘中选择*)\u空间\u照片 其中contexts\u spatial.area\u easting={$\u SESSION['area\u easting']} 和上下文\u spatial.area\u nor

我正在尝试使用PDO更新我的postgres数据库中的一行

表单未将变量发送到处理程序文件

我不确定问题出在哪里,我已经为此奋斗了几天

形式

/$maxContent已设置且可用
//$context\u编号已设置且可用
回声“;
$query3=$conn->prepare(“从挖掘中选择*)\u空间\u照片
其中contexts\u spatial.area\u easting={$\u SESSION['area\u easting']}
和上下文\u spatial.area\u northing={$\u SESSION['area\u northing']}
和context_space.context_number={$_SESSION['context_number']});
//背景、空间、照片
$query3->execute();
而($r=$query3->fetch(PDO::fetch_OBJ))
{
//每种需要
回声“;
回声“;
回声“;
回声“;
};
回声“;
回声“;
处理者

    <?php
    session_start();

    //
    include 'connect/connect.php';
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if (!isset($_SESSION['photograph_date'])) {$_SESSION['photograph_date'] = $_POST['photograph_date'];}
    if (!isset($_SESSION['photograph_number'])) {$_SESSION['photograph_number'] = $_POST['photograph_number'];}
    if (!isset($_SESSION['primary_shot'])) {$_SESSION['primary_shot'] = $_POST['primary_shot'];}
    if (!isset($_SESSION['maxContext'])) {$_SESSION['maxContext'] = $_POST['maxContext'];}

    if (isset($_SESSION['photograph_date'])) {$_SESSION['photograph_date'] = $_POST['photograph_date'];}
    if (isset($_SESSION['photograph_number'])) {$_SESSION['photograph_number'] = $_POST['photograph_number'];}
    if (isset($_SESSION['primary_shot'])) {$_SESSION['primary_shot'] = $_POST['primary_shot'];}
    if (isset($_SESSION['maxContext'])) {$_SESSION['maxContext'] = $_POST['maxContext'];}

    //echo "Photograph Date: "; echo $_SESSION['photograph_date']; echo "<br />";
    //echo "Photograph Number: "; echo $_SESSION['photograph_number']; echo "<br />";
    //echo "Primary Shot: "; echo $_SESSION['primary_shot']; echo "<br />";

try {
    $sql3 = "UPDATE excavation.contexts_spatial_photographs SET 
        context_number = :context_number 
        WHERE contexts_spatial_photographs.area_easting = $area_easting
        AND contexts_spatial_photographs.area_northing = $area_northing
        AND contexts_spatial_photographs.context_number = $context_number";

    $stmt2 = $conn->prepare($sql3);

    // prepare sql and bind parameters 
    $stmt2->bindParam(':context_number', $maxContext, PDO::PARAM_INT);
    $stmt2->execute(); 

    echo "Record updated successfully in contexts spatial photographs<br />";

    }
catch(PDOException $e)
    {
     echo "Error: " . $e->getMessage();
    }

?>

在处理程序的顶部,您可以使用以下行:

if (isset($_SESSION['maxContext'])) {$_SESSION['maxContext'] = $_POST['maxContext'];}
这些是设置会话变量中的值,这很好。 但是在你的SQL中-

 AND contexts_spatial_photographs.context_number = $maxContext";
$maxContext似乎没有设置在任何位置。这可能与会话变量相同,因此需要

$maxContext = $_SESSION['maxContext'];


虽然使用bindParam会更好,但与使用
:context\u number

一样,抱歉,应该提到,$maxContent已经设置好了。未发布的变量是照片日期、照片编号和主要快照。只需重新读取Update语句,将$maxContext作为搜索条件之一,然后将该值设置为$maxContext。这肯定一事无成?!啊,是的,很好地发现,我已经将代码编辑为$context\u numberOne。另一件事是,一旦会话变量设置好,它们就不会被拾取,因为代码说,如果会话变量已经设置好了,不要麻烦查看它们。
$maxContext = $_SESSION['maxContext'];
 AND contexts_spatial_photographs.context_number = $_SESSION['maxContext']";