Php PDO更新不返回变量
我正在尝试使用PDO更新我的postgres数据库中的一行 表单未将变量发送到处理程序文件 我不确定问题出在哪里,我已经为此奋斗了几天 形式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
/$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']";